PDA

查看完整版本 : [求助]关于C#与MATLAB混合编程的一点问题,请各位高手不吝赐教。


kk20021055
2008-05-07, 21:09
关于C#与MATLAB混合编程的一点问题,请各位高手不吝赐教。
在程序运行之前,我已经将M文件生成了DLL,并且已经注册,在VISUAL STUDIO 中已经注册了该DLL。
在VS 中我的代码是:(用的控制台) 问题是老是提示:Function 'plus' not defined for variables of class 'int32'.
M文件为:求两数的和
function result=add(left,right)
result=left + right;

C#代码:
using System;
using System.Collections.Generic;
using System.Text;

namespace MATLAB混合编程2
{
class Program
{
static void Main(string[] args)
{
try
{
addnum.addnumClass f = new addnum.addnumClass(); //注册的M文件所生产的DLL
object result;
int left = 3;
int right = 5;
result = new Object();
f.add(1, ref result, left, right);
int answer = (int)result;
Console.WriteLine(answer);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}

}
}
}

:redface: :redface: :redface: :redface: :redface:

wfr666
2008-05-13, 23:08
看不太懂,可能很简单吧,呵呵,请楼主细心的讲解一下吧

moonykily
2008-06-17, 11:40
没有using MathWorks.Matlab........
没有using你生成的dll的namespace
这些都需要手工加到工程的reference中并写上using的

popnose
2008-07-15, 11:55
请问你的dll文件是怎么注册的 我为什么注册的时候出现问题:已加载,但是没有找到输入点呢?

moonykily
2008-07-21, 01:35
请问你的dll文件是怎么注册的 我为什么注册的时候出现问题:已加载,但是没有找到输入点呢?

我的做法是:
1. 在matlab中用matlab builder把.m文件编译为.net assembly
2. 在vs中添加路径,使得mathworks这个namespace可以被reference到,以便使用matlab中的数组类
3. 在工程中添加到mathworks和第1步生成的assembly的reference
然后就可以用了

你的问题描述得不是很清楚
我觉得其实你查一查matlab的帮助文件,按照getting started讲的步骤,就能让程序正常跑起来