Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)

Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)

Matlab的版本太多,使用起来很麻烦,我使用过maltab2010b.2007b.都没有成功,最后装了matlab2012才成功,不知道是不是我操作的问题。本人没有使用过matlab.以下是实现的过程。

参考http://forum.simwe.com/thread-801187-1-1.html

先建立一个简单的m文件:

function mcctest01

 

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.h libmcctest01.lib libmcctest01.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.liblibmcctest01.lib。将上述三个文件拷贝到VC工程所在目录,在Project菜单中Add Existing Itemmccmfc01.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();

}

编译完,运行即可。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值