vb.net调用Matlab通过com方式生成的dll函数问题

rabiboy 2013-10-15 04:47:32
我用vb.net调用Matlab通过com方式生成的dll函数,在Matlab中函数调试的没问题了,vb.net调用时提示:无法将类型为“System Double[,]”的对象强制转换为类型“System Double[]”。

我先试了一下其它被我调用函数,是可以用的,说明dll应该是没问题的了。

我又检查了我的输入和输出给的矩阵的维度都是对的,程序中也没有需要从二维转到一维的地方,所以想问这个地方错在哪里了 ?谢谢
...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabiboy 2013-10-15
  • 打赏
  • 举报
回复
引用 1 楼 UR_Not_Alone 的回复:
错在你有想把“System Double[,]”的对象强制转换为类型“System Double[]”的地方,检查你的程序中用到Double数组的地方
关键我输入的都以一维数组,没有涉及到“System Double[,]”的对象强制转换为类型“System Double[]”的地方,而且我在Matlab调试通过了才生成的dll,生成以后在vb.net调用时是看不到执行到哪一步出错的。。。
夜轻风 2013-10-15
  • 打赏
  • 举报
回复
错在你有想把“System Double[,]”的对象强制转换为类型“System Double[]”的地方,检查你的程序中用到Double数组的地方
利用activeX实现matlab和vb的混合编程-vb_matlab_activeX.rar      想要在vb里面直接执行matlab的代码吗?想省去编译dll文件的代码吧?     好的,activeX帮你实现这样的功能.     activeX简介: ActiveX部件是Microsoft公司提供的一种用于模块集成的新的协议,它是Visual Basic工具箱的扩充部分。在程序中加入ActiveX后,它将成为开发和运行环境的一部分。Matlab实现了ActiveX自动化服务支持,在Visual Basic下通过ActiveX自动化接口可将Matlab作为Visual Basic语言的一个ActiveX部件调用,实现VB与MATLAB间的无缝集成,该方式比较适合C/S模式,具有自动化程度高、效率高、占用资源少、数据交换能力强等优点,大大缩短了程序开发周期,优化了系统性能。 activeX运用: 使用ActiveX部件,首先必须获得Matlab ActiveX对象在系统注册表中定义的名字─Matlab.Application。在VB中创建ActiveX对象的代码如下: Dim Matlab as Object. Set Matlab = CreateObject Matlab.Application对象主要有3个函数,具体如下: (1) BSTR Execute([in]BSTR Command)方法 接受单一的字符串(Command), MATLAB将运行命令及结果作为一个字符串返回。用于执行一个合法的MATLAB命令; (2) PutFullMatrix方法 void PutFullMatrix pr, [in] SAFEARRAY pr, [in] SAFEARRAY pi ) 将一个指定变量名的一维或二维数组(mxArray)放入工作空间。 (3) GetFullMatrix方法 void GetFullMatrix pr, [in] SAFEARRAY pr, [in] SAFEARRAY pi ) 通过GetFullMatrix方法,从指定的工作空间检索一个完整的一维或二维的实型或虚型数组(mxArray),其实部和虚部分别存放到两个单独的Double型数组中。[2] 通过这三种方法,可以方便地利用Matlab执行命令,从VB向Matlab中输送数据或者从Matlab中获取数据。 实例举例: 1.程序功能: 给出三个变量:x=0:0.05*pi:10*pi;y=sin;z=cos 并且做出x,y,z的三维图形,并在vb的image窗口中显示,             下面是vb程序的界面,只有一个command按钮和image图片框    程序界面.jpg 下面是程序的运行结果: 程序运行结果.jpg 2.代码 Dim Matlab As Object Dim Result1 As String Dim Result2 As String Dim Result3 As String Private Sub Command1_Click() Result1 = Matlab.Execute;z=cos") Result2 = Matlab.Execute") Result3 = Matlab.Execute") Image1.Picture = Clipboard.GetData() Call Matlab.quit '退出Matlab End Sub Private Sub Form_Load() Set Matlab = CreateObject End Sub 3.程序源程序: vb_matlab_activeX.rar

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧