VB.net调用Matlab生成的DLL问题

嗯,写了个m文件,内部有个函数叫LU5,输入参数是6个长度n的数组,输出参数是一个长度n的数组,即x=LU5(a,b,c,d,e,f),在matlab下完全无问题,生成dll时候也没有问题
现在用VB.net2008调用这个DLL,就是求一个详细的写法(假设数组已经赋值就好了),反正也没有几句

主要是自己写的返回的x居然只有一个....................
解决后再奉上100分(不知道上限多少...如果不足100就给上限的...)
了解,貌似我就少写了个CType那句.....
这个是基于COM的调用么?不是Matlab新版的.net调用么?
我明天去机房试试先,多谢啦

悲剧了.....不行了....不知道少了啥总出错了....

已测试,源码如下:

一、Matlab函数代码

function x = LU5(a, b)

for i = 1 : length(a)

    x(i) = a(i) + b(i);

end

二、VB.NET 2005 测试代码

    Private Sub test()

        Dim st As New QCS_com.QCS_LU5

        Dim a() As Double = {1, 2, 3, 4}

        Dim b() As Double = {1, 2, 3, 4}

        Dim x As New Object

        st.lu5(1, x, a, b)

        Dim r As Double(,)

        r = CType(x, Double(,))

    End Sub

三、测试截图见附图 

补充一下环境:Matlab6.5 版本,是基于COM调用的。最新版的.net调用没试验过。这个是我前一阵子帮同学写的,他装的版本是6.5,所以就装了个6.5的版本,后来因为涉及到小波及拟合,用COM打包调用有些问题,最后还是采用了引擎方式进行处理了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-08
出现这种问题是你的dll 代码的问题,之前我也遇到这种情况,我把dll文件改做在vb6里生成(先弄成启动是Sub main的,你一步一步调试,OK后,在重启vb6制成dll),然后用vb2008调用,调用语句就像楼上的那样(记住先要在工程中引用)
相似回答