找回密码
 注册
Simdroid-非首页
楼主: SCIE

【原创】MATLAB与VC界面混合编程尝试

[复制链接]
 楼主| 发表于 2004-9-22 21:48:55 | 显示全部楼层 来自 天津

回复: 【原创】MATLAB与VC界面混合编程尝试

这个得看编译后的函数即你要调用的函数的原型是什么样子的。
如果编译后的要调用的函数没有参数,那么直接调用即可,如果有mwArray类型的参数,那么请参照MATLAB的C++数学函数库的手册查看如何使用mwArray类。以下是MATLAB C++数学函数库的手册:(不适用于MATLAB7.0)
  
http://www.simwe.com/cgi-bin/ut/threaded_show.cgi?tid=56229&pid=292001
dafan 该用户已被删除
发表于 2004-9-29 15:15:18 | 显示全部楼层 来自 广东广州
提示: 作者被禁止或删除 内容自动屏蔽
hrbgczsw 该用户已被删除
发表于 2004-9-29 21:16:19 | 显示全部楼层 来自 哈尔滨工程大学
提示: 作者被禁止或删除 内容自动屏蔽
dafan 该用户已被删除
发表于 2004-9-29 21:54:44 | 显示全部楼层 来自 广东广州
提示: 作者被禁止或删除 内容自动屏蔽
lwl404 该用户已被删除
发表于 2004-10-2 16:07:05 | 显示全部楼层 来自 哈尔滨工程大学
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2004-10-4 21:21:51 | 显示全部楼层 来自 天津

回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

输入[y,z]=fan(3,4)才能显示y和z,只输入了fan(3,4),默认值ans为y.

这样就对了,假如你不制定第二个输出参数,是不可能返回第二个值的。如果你没有制定任何参数,那么MATLAB会默认ans为第一个输出参数。

void CMy111Dlg::OnButton1()  
{  
// TODO: Add your control notification handler code here  
  
mwArray y;  
mwArray q2;  
(******)y=fan(mwArray q2,mwArray1),mwArray(2));  
double a1=(double)y.ExtractScalar(1);  
double a2=(double)q2.ExtractScalar(1);  
CString aa1;  
aa1.Format("%.4f",a1);  
AfxMessageBox(aa1);  
  
CString aa2;  
aa2.Format("%.4f",a2);  
AfxMessageBox(aa2);  
}  

这样做是不行的,要这样:
  
void CMy111Dlg::OnButton1()  
{  
// TODO: Add your control notification handler code here  
  
mwArray y;  
mwArray q2;  
y=fan(&q2,mwArray(1.0),mwArray(2.0));  
double a1=(double)y.ExtractScalar(1);  
double a2=(double)q2.ExtractScalar(1);  
CString aa1;  
aa1.Format("%.4f",a1);  
AfxMessageBox(aa1);  
  
CString aa2;  
aa2.Format("%.4f",a2);  
AfxMessageBox(aa2);  
}  
建议你看一下编译出的程序中函数fan的原型是怎样的。
 楼主| 发表于 2004-10-4 21:39:05 | 显示全部楼层 来自 天津

回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

lwl404 wrote:
请问:  下载后的程序编译不通过呢?
mlfHGInitialize(NULL,NULL);是干什么的用的,加上它以后就出现内存问题。
去调它以后,也不能画出图来。

这个是初始化图形库用的,所以去掉之后画不出来。至于加上之后出现的问题,我又在设置上做了一些改动,你试试直接运行Release目录中的程序看是否出现错误。
lwl404 该用户已被删除
发表于 2004-10-5 11:05:11 | 显示全部楼层 来自 哈尔滨工程大学
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2004-10-5 17:59:29 | 显示全部楼层 来自 天津

回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

lwl404 wrote:
谢谢SCIE,我运行了RELESE目录中的程序还是不行。
  
应用程序错误对话框:
“0X0030115E”指令引用的“0x0000000”内存。该内存不能为“read" 。

你是重新下载的程序吗?我又更新了一次。
到第一页重新下载程序,然后把release目录下的程序拷贝到Matlab6p5\bin\win32目录下去再执行试试看。
lwl404 该用户已被删除
发表于 2004-10-6 11:28:48 | 显示全部楼层 来自 哈尔滨工程大学
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2004-10-6 18:58:29 | 显示全部楼层 来自 天津

回复: 【原创】MATLAB与VC界面混合编程尝试

我用的是VC6.0+MATLAB6.5+Windows2000 Server,也有好多人反映过这个问题,但是也有好多人说没有问题,一直没有搞清楚是怎么回事。
 楼主| 发表于 2004-10-6 19:06:47 | 显示全部楼层 来自 天津

回复: 【原创】MATLAB与VC界面混合编程尝试

难道是MATLAB的SP1补丁造成的差异?我没有SP1的补丁,有时间的话在QQ(到我的个人信息里查找我的QQ号,或者留下你的QQ号)上讨论一下,我很希望能解决这个问题。
 楼主| 发表于 2004-10-7 10:49:42 | 显示全部楼层 来自 天津

回复: 【原创】MATLAB与VC界面混合编程尝试

已经基本确定该程序不能在有些机器上运行的原因是因为MATLAB版本的问题,该程序只能在MATLAB6.5附带的DLL的支持下运行,不能在MATLAB6.5.1及其它版本的MATLAB的DLL下运行。
发表于 2004-10-7 11:48:26 | 显示全部楼层 来自 湖南长沙

回复: 【原创】MATLAB与VC界面混合编程尝试

SCIE:绘图后,无法获取图形上的鼠标事件,怎么办?
 楼主| 发表于 2004-10-7 12:42:58 | 显示全部楼层 来自 天津

回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

laye wrote:
SCIE:绘图后,无法获取图形上的鼠标事件,怎么办?

鼠标事件的获取要在matlab代码中实现。
  
另:是因为matlab6.5.1中的sgl.dll文件发生了变化导致程序运行失败。
由于matlab6.5.1的sgl.dll文件中增加了两个函数
mlfHGCheckForFigures
mlfHGInitWaitForFigures
致使在matlab6.5下编译的程序在调用函数mlfHGInitialize时无法在新的sgl.dll定位该函数,所以程序运行失败。
发表于 2004-10-8 09:59:41 | 显示全部楼层 来自 陕西西安

回复: 【原创】MATLAB与VC界面混合编程尝试

SCIE,你好,我的GUI界面编译出的独立应用程序 执行时总出现下面问题,感觉很奇怪,怎么解决啊?
  
An error occurred in the callback : Enviroment_set('import_pushbutton_Callback',gcbo,[],guidata(gcbo))
The error message caught was      : Reference to unknown function or variable 'Enviroment_set' while evaluating expression.
 楼主| 发表于 2004-10-8 13:20:00 | 显示全部楼层 来自 天津

回复: 【原创】MATLAB与VC界面混合编程尝试

是因为Enviroment_set函数没有被编译,你在程序中添加这样一行试试。
Fun_CallBack = @Environment_set;
这一行的作用只是使编译程序对函数Environment_set进行编译,没有其它用处。
发表于 2004-10-8 19:17:37 | 显示全部楼层 来自 陕西西安

回复: 【原创】MATLAB与VC界面混合编程尝试

这就是我GUI的主函数啊,
我用mcc -B sglcpp Enviroment_set.m直接编译的
 楼主| 发表于 2004-10-8 21:02:34 | 显示全部楼层 来自 天津

回复: 【原创】MATLAB与VC界面混合编程尝试

检查一下你的主程序文件名是否与Callback中设置的Enviroment_set一致,仔细比较一下。
发表于 2004-10-11 11:15:11 | 显示全部楼层 来自 LAN

回复: 回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

SCIE wrote:
[quote]laye wrote:
SCIE:绘图后,无法获取图形上的鼠标事件,怎么办?

鼠标事件的获取要在matlab代码中实现。
  
SCIE,我还是不大明白,能说得清楚一点吗?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-24 19:59 , Processed in 0.047097 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表