MATLAB与C++混合编程:动态链接库方法实现混合编程及常见错误解决办法

C++动态链接库方式调用MATLAB写好的函数,将C++的参数传递给MATLAB的dll,然后将结果返回给C++进行显示或处理。


编写MATLAB函数生成dll

function [y]=sincplot(n)
x1=0.01:0.01:n*pi;
y1=sin(x1)./x1;
x2=-n*pi:0.01:-0.01;
y2=sin(x2)./x2;
y=[y2 y1];
plot([x2 x1], y);
然后用MATLAB语句进行编译。

编译:mcc -B cpplib:libsincplot sincplot.m

注意由于我用的是C++,故应使用参数cpplib,若是C应该是使用csharedlib(应该是)。用错了,就会出现链接错误,这个bug卡了我一星期。详见混合编程MATLAB引擎的一些错误(error LNK2019: 无法解析的外部符号)

最后会生成很多文件,此处要用到的文件有三个:libsincplot.h,libsincplot.lib,libsincplot.dll。

C++环境的配置

新建C++工程,然后有几个需要配置的地方
  1. 项目->属性->配置属性->C++目录,将包含目录添加以下目录:F:\MATLAB R2010b\extern\include。就是MATLAB下的extern文件夹下去找。
  2. 项目->属性->配置属性->C++目录,将库目录添加以下目录:F:\MATLAB R2010b\extern\lib\win64\microsoft。由于我的MATLAB是64位的,应用win64文件夹下的文件。(我测试了一下,这个貌似不设置也是可以的)
  3. 项目->属性->配置属性->链接器->输入,将附加依赖项添加以下lib文件:libsincplot.lib(刚编译生成的),mclmcrrt.lib(在F:\MATLAB R2010b\extern\lib\win64\microsoft\目录下)。

C++程序编写

  • 将刚刚生成的libsincplot.h添加到工程当中。
  • 在要使用dll的文件中添加#include "libsincplot.h",一会要用到里面的函数,如
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值