matlab生成的dll初始化失败,VC调用Matlab编译的DLL,老初始化失败
我用的是VC6与Matlab2011A
装饰Matlab代码编译成DLL文件老失败,搞了好久没找到原因,请教各位!
以下是网上的算例,照着做了,就是不能初始化DLL。
发表于: 2007-10-18 17:35:31 我的开发环境是:Matlab 7.0 和 VC++6.0(mbuild环境已配置好)
编程步骤:
1、在Matlab中编写一个Draw.m文件,文件内容为:
%实现输入x1与x2,然后绘制sin曲线,然后生成两个随机数并输出
function [X1,Y1]=Draw(x1,x2)
x=x1:0.1:x2;
y=sin(x);
X1=rand(1);
Y1=rand(1);
plot(x,y,X1,Y1,'*');
2、利用命令 mcc -W cpplib:Draw -T link:lib Draw.m 生成DLL;
3、新建一个VC++工程(基于对话框的)
4、拷贝draw.h、Draw.dll、Draw.lib及Draw.ctf到VC++工程目录中,并将Draw.h 加入到当前工程中;
5、设置环境:Project->Setting->Link->Category :Input->Object/library modules:mclmcr.lib Draw.lib;
6、在对话框的头文件中加入 #include "draw.h" 与 #include "mclmcr.h";
7、在对话框的OnInitDialog()事件中进行 MATLAB 库文件的初始化,在对话框的OnDestroy()事件中进行 MATLAB 库文件资源的释放,代码如下:
BOOL CMatlabDrawInputXYDlg::OnInitDialog()
{
CDialog::OnInitDialog();
……………
// TODO: Add extra initialization here
/* Call the mclInitializeApplication routine. Make sure that the application
* was initialized properly by checking the return status. This initialization
* has to be done before calling any MATLAB API's or MATLAB Compiler generated
* shared library functions. */
if( !mclInitializeApplication(NULL,0) )
{
AfxMessageBox( "Could not initialize the application.");
exit(1);
}
/* Call the library intialization routine and make sure that the
* library was initialized properly. */
if (!DrawInitialize())
{
AfxMessageBox("Could not initialize the library.");
exit(1);
}
return TRUE; // return TRUE unless you set the focus to a control
}
void CMatlabDrawInputXYDlg::OnDestroy()
{
CDialog::OnDestroy();
/* Call the library termination routine */
DrawTerminate();
mclTerminateApplication();
}
8、在窗体界面上放置两个编辑框(用于输入起始值和终止值,并设置变量m_X1和m_X2,均为double类型)和一个按钮;
9、编辑按钮单击事件代码,如下:
void CMatlabDrawInputXYDlg::OnBUTTONDraw()
{
// TODO: Add your control notification handler code here
double Data_X1[1],Data_X2[1];
double Data_Out1[1],Data_Out2[1];
CString strPromt;
mwArray m_InX1(1,1,mxDOUBLE_CLASS);
mwArray m_InX2(1,1,mxDOUBLE_CLASS);
mwArray m_OutX1(1,1,mxDOUBLE_CLASS);
mwArray m_OutX2(1,1,mxDOUBLE_CLASS);
UpdateData(TRUE);
Data_X1[0]=m_X1;
Data_X2[0]=m_X2;
m_InX1.SetData(Data_X1,1);
m_InX2.SetData(Data_X2,1);
draw(2,m_OutX1,m_OutX2,m_InX1,m_InX2);
//extern void mlxDraw(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
//extern void draw(int nargout, mwArray& X1, mwArray& Y1, const mwArray& x1, const mwArray& x2);
m_OutX1.GetData(Data_Out1,1);
m_OutX2.GetData(Data_Out2,1);
strPromt.Format("X1= %.6f",Data_Out1[0]);
AfxMessageBox(strPromt);
strPromt.Format("Y1= %.6f",Data_Out2[0]);
AfxMessageBox(strPromt);
}
10、编译通过,运行正常
matlab生成的dll初始化失败,VC调用Matlab编译的DLL,老初始化失败相关推荐
- vc调用matlab生成的C++dll库总结。
实验室的一个项目需要调用matlab程序.经过再三考虑,决定使用vc调用matlab导出库的形式.而我主要负责与matlab程序结合的工作.以下是今天工作的简要总结.全当是个备忘吧. 1:在matla ...
- vc只能调用matlab子函数,VC调用matlab函数
最近在学习matlab,先试一个VC调用matlab函数的简单例子 用的是VC++6.0,matlab7.8也就是matlabR2009 首先在matlab下设置环境 >> mbuild ...
- VC调用MATLAB 产生的dll文件
1.当然是先建立matlab的m文件. 我在matlab中定义了一个函数, 其m文件如下: function re=add(C) N=73;alpha=(0.2)*(pi/2); Ts=sqrt(2* ...
- VC调用matlab中定义的.m文件中的函数的实例
Matlab是一个强大的数学计算/仿真工具,其内置了很多实用的现成的函数,而且我们经常也自己定义很多m函数.但在很多情况下,我们不得不使用VC编程.那么,如何在VC中利用matlab的资源呢?在这里我 ...
- VC调用C#写的DLL
From: http://hi.baidu.com/ocnc/blog/item/2c7fc45c1d1f1051fbf2c0ea.html VC中调用C#写的DLL时,对C#这边的DLL有要求,即要 ...
- 调用matlab dll报错,c#调用MATLAB的dll时出错
MATLAB是2014a,VS是2013的. 在C#中调用matlab生成的dll文件时,ceshi.Class1 yaoyi = new Class1(); 对类进行实例时,抛出异常.异常为: 未 ...
- matlab读mif文件,关于QuartusII里面调用MATLAB里生成的mif文件的一些问题(转)
关于QuartusII里面调用MATLAB里生成的mif文件的一些问题(转) 最近做DDS正弦信号发生器,需要用到MATLAB生成一个正弦信号的ROM(MIF文件).首先在MATLAB里面建立一个M- ...
- cvi调用matlab dll,cvi通过artix调用matlab
[实例简介] cvi通过artix调用matlab,官方例程改的,不过官方例程一般人运行不起来,因为库不匹配,这个是matlab2015b32位和cvi2017的 [实例截图] [核心代码] f403 ...
- vc 调用matlab figure 画图
我的环境 matlab7.0, vs2012.执行mex -setup 和mbuild -setup 是选的vc6,vs执行命令的时候不可见 参考1:http://www.ilovematlab.cn ...
最新文章
- 「炫富」的GPT-3来了:31位作者,45TB数据,72页论文,1750亿个参数,会编故事,还会三位数加减法...
- 获取预制体_基于弱磁探测技术的轴承滚动体转速检测方法研究
- Spring 的优点
- 使用JavaFX AnimationTimer
- hadoop中两种上传文件方式
- vue 固定div 滚动_vue.js-div滚动条隐藏但有滚动效果的实现方法
- 总结!进入libvirt的虚拟化世界(一)得到libvirt的连接
- Go 语言学习总结(5)—— Go 学习笔记总结
- 使用正则表达是搜索多个字符串,表达式中加入变量
- 多线程----简单的生产者和消费者
- matlab bode 频率,matlab – bode和freqz之间的区别
- 物联网平台开发接口http/mqtt,支持部标808/1078协议对接
- 梅花雪MzTreeView2.0 的checkbox完全攻略
- Cesium geojson 区域拉伸高度
- 如何用python整理表格_Python 自动整理 Excel 表格
- Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试
- 【GIS开发】VB6.0下MO控件的安装:安装教程及MO破解教程(MapObjects2.x)
- 可能是东半球最全的RxJava使用场景小结
- 3 MySQL数据管理
- 逐行分析鸿蒙系统的 JavaScript 开发框架