Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)
来源:互联网 发布:数据库工程师考试书籍 编辑:程序博客网 时间:2024/04/29 20:32
Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)
Matlab的版本太多,使用起来很麻烦,我使用过maltab2010b.2007b.都没有成功,最后装了matlab2012才成功,不知道是不是我操作的问题。本人没有使用过matlab.以下是实现的过程。
参考http://forum.simwe.com/thread-801187-1-1.html
先建立一个简单的m文件:
functionmcctest01
x=0:0.01:20;
y = x.*sin(x);
plot(x,y);
xlabel('x');
ylabel('y');
需要注意文件名,在vc中需要调用。
下一步,在MATLAB中进行编译设置,键入"mex -setup”,选择VC2005。
继续输入"mbuild -setup",和上面一样仍然选择VC2005。两步选择一样。
下一步,将m文件转换为可被VC调用的dll文件。在matlab中输入命令:
mcc -t -h -L C -W lib:libmcctest01 -T link:lib mcctest01.m
MATLAB会提示 -t -h -L这三个参数已经不再使用了,不管它,工作目录中会生成一堆文件,其中的libmcctest01.hlibmcctest01.liblibmcctest01.dll三个文件是我们所需要的。
下一步,在VC2005中添加配合MATLAB编程的lib目录和include目录。
在 " \Tools \ Options \ Projects and Solutions \ VC++ Directories"中,在 " Include files "和 " Library files "中分别添加下列目录(默认安装位置):
" F:\Program Files\MATLAB\R2012a\extern\include "
"F:\Program Files\MATLAB\R2012a\extern\lib\win32\microsoft "
下一步,使用VC2005新建基于对话框的工程(mfcmcctest01),在 " \Project \ Properties \ Configuration Properties \ Linker \ Input " 中添加mclmcrrt.lib、libmcctest01.lib。将上述三个文件拷贝到VC工程所在目录,在Project菜单中Add Existing Item把mccmfc01.h添加到工程中。
下一步,编程。在恰当的位置添加 #include mccmfc01.h"。在mccmfc01.h中可以看到上面m文件中那个函数的C语言声明:
externLIB_libmcctest01_C_API
boolMW_CALL_CONVmlxMcctest01(intnlhs, mxArray *plhs[], intnrhs, mxArray *prhs[]);
在mccmfc01Dlg.cpp文件的OnInitDialog()加入MCR初始化函数mclInitializeApplication(NULL, 0)、与静态库初始化函数libmcctest01Initialize()。
BOOLCmccmfc01Dlg::OnInitDialog()
{
// TODO: Add extra initialization here
if (!mclInitializeApplication(NULL, 0))
{
AfxMessageBox(_T("Cloudnot...."));
}
libmcctest01Initialize(); // 初始化
returnTRUE; // return TRUE unless you set the focus to a control
}
在按键响应函数OnBnClickedButton1()添加m文件中定义的函数mlfMcctest01();,注意是mlfMcctest01(),而不是mcctest01()。这个地方让我吃了很多哑巴亏,浪费了很多时间。
voidCmccmfc01Dlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
mlfMcctest01();
}
编译完,运行即可。
- Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)
- VC与Matlab混合编程(在VC中调用.m文件编译生成的DLL)
- VC++和Matlab混合编程(在VC中调用将.m文件生成的DLL)
- DLL文件 VC++&Matlab混合编程( 调用DLL)
- Matlab与c++混合编程[四.通过VC调用Matlab编译产生的dll文件]
- VC与Matlab混合编程实例(Matlab7.0函数转换成VC的.dll)
- VC++调用Matlab编写的DLL(混合编程)
- vs2005生成dll与lib文件
- VC++与Matlab混合编程之二:调用Matlab中M函数转换成DLL文件的形式
- VC与Matlab混合编程(在VC中调用DLL)
- VC与Matlab混合编程(在VC中调用DLL) .
- VC与Matlab混合编程(在VC中调用DLL)
- VC与Matlab混合编程(在VC中调用DLL)
- matalb7与VC2008混合编程DLL方法(三)VC调用matlab的DLL库函数
- Vc调用matlab导出的dll,实现vc与matlab混合编程
- VC与Matlab混合编程——基于编译m函数为DLL的方法
- VC与Matlab混合编程——基于编译m函数为DLL的方法
- MinGW 与 MSVC 生成 DLL 各种情况的折腾笔记
- 扩展IE不支持的属性HTMLElement,在每个获取的元素下,加上指定的方法
- 电脑入门学习最佳方法介绍
- QT 显示中文 操作
- 王爽的书,实验五
- Foreach在Smarty中的用法
- Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)
- vim-latex 的安装与配置
- HTTPS客户端程序示例
- 网络生活点滴 网络管理实用8招技巧
- HTTP协议的C语言编程实现实例
- 即便是还不会识字
- 常用JS判断表单
- 金山快盘——大家来注册吧
- 【Access源码示例】模糊筛选子窗体\任意筛选子窗体数据\模糊查找子窗体数据