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

任务类别:

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


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

一. 设置matlab库目录

踩坑记录:C++调用matlab生成的动态链接库_第1张图片

  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)

踩坑记录:C++调用matlab生成的动态链接库_第2张图片

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

使用matlab生成动态链接库

  1. 输入 deploytool 打开开发者工具,再点击 Library Compiler
    踩坑记录:C++调用matlab生成的动态链接库_第3张图片
  2. 打开后如下图所示,选择自己需要转化的 .m文件(必需是函数),Package即可
    踩坑记录:C++调用matlab生成的动态链接库_第4张图片
  3. 得到相应的文件
    踩坑记录:C++调用matlab生成的动态链接库_第5张图片
    踩坑记录:C++调用matlab生成的动态链接库_第6张图片

使用动态链接库

  1. 先将转化后的文件放入项目中,其中根目录文件夹下需要放置使用对象的 .dll文件
    踩坑记录:C++调用matlab生成的动态链接库_第7张图片
  2. 设置项目中的附加包含目录
    踩坑记录:C++调用matlab生成的动态链接库_第8张图片
  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)!

你可能感兴趣的:(C++,matlab,c++,开发语言)