踩坑记录:C++调用matlab生成的动态链接库

任务类别:

通常出现在项目中,使用 Matlab 设计算法,最后应用于 Qt 的应用程序中。


配置Vs2008环境:(PS:这里应该也同样能应用于其它版本)

一. 设置matlab库目录

在这里插入图片描述

  1. 选择“可执行文件”下拉框,添加:" ###\MATLAB\R2015b\bin\win32 "
    (PS:###表示你自己安装的matlab根目录)
  2. 选择“包含文件”下拉框,添加:###\MATLAB\R2015b\extern\include
  3. 选择“引用文件”下拉框,添加:###\MATLAB\R2015b\extern\lib
  4. 选择“库文件”下拉框,添加:###\MATLAB\R2015b\extern\lib\win32\microsoft
    上述环境只需要配置一次

二. 添加项目的附加依赖项(注意配置:Debug/Release)

在这里插入图片描述

libmex.lib
libmx.lib
libmat.lib
mclmcrrt.lib

使用matlab生成动态链接库

  1. 输入 deploytool 打开开发者工具,再点击 Library Compiler
    在这里插入图片描述
  2. 打开后如下图所示,选择自己需要转化的 .m文件(必需是函数),Package即可
    在这里插入图片描述
  3. 得到相应的文件
    在这里插入图片描述
    在这里插入图片描述

使用动态链接库

  1. 先将转化后的文件放入项目中,其中根目录文件夹下需要放置使用对象的 .dll文件
    在这里插入图片描述
  2. 设置项目中的附加包含目录
    在这里插入图片描述
  3. 在代码中使用,初始化
#include "mclmcrrt.h"
#include "*.h"
#pragma comment( lib, "*.lib" )

其中 * 表示你转换的动态链接库名称,比如我用上面生成的就应该是

#include "mclmcrrt.h"
#include "DJCalQ.h"
#pragma comment( lib, "DJCalQ.lib" )

初始化函数

 mclInitializeApplication(NULL,0);
 DJCalQInitialize();
 /*
 * 使用代码
 */
 DJCalQTerminate();
 mclTerminateApplication();

具体怎么使用有一篇博文比较详细:Qt与Matlab混合编程中mwArray数组使用详解

注意上述初始化需要成对出现且对称,否则会出现一些意料之外的惊喜(Bug)!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值