使用c++调用matlab编译的dll.doc

由于项目需要,要把faster_rcnn的MATLAB代码封装成dll,中间自己也遇到了很多问题,最后终于完成任务,以下是自己的编译心得,写的有不明白的可以留言讨论。转载请注明出处!

1、首先修改MATLAB代码可以传入或传出参数,根据代码的具体要求进行修改你的MATLAB代码。 
2、其次确保MATLAB代码中的命令窗口可以使用deploytool命令,如果不能使用,请百度(很容易找到,不提供了) 
确保你的所有代码都在包含的路径中,在命令窗口输入deploytool命令,会提示这里写图片描述

对话框,选择对话框中的Library Compiler选项,然后弹出对话框如下:这里写图片描述

选择C++shared Library,点击‘+’选择入口文件,选择 runtime included package,下面运行程序所需的文件会自动添加(文件多的话 需要1秒钟),如果没有添加,你可以手动添加。检查添加没问题的话,直接点击右上角的Package按钮,等待即可。等编译完成后,会生成3个文件夹,选择for_redistribution_files_only文件夹,里面有你需要的lib与dll,在for_redistribution中,可以运行安装MyAppInstaller_mcr.exe。 
以上是MATLAB编译dll部分。

在没有MATLAB的电脑上运行,需要安装MATLAB Compiler Runtime 在安装的MATLAB里可以找到相应的.exe文件,运行即可 
建立工程时,在属性页,vc++目录中,添加安装MATLAB Compiler Runtime的lib及include,以及你的MATLAB代码编译的库即可。在连接器,输入,附加依赖项中,添加mclmcrrt.lib 
mclmcr.lib 
libeng.lib 
libmx.lib 
libmex.lib 
libmat.lib 
gpu.lib(需要gpu的话) 
及你MATLAB代码编译好的库即可。 
做c++接口函数时,主要需要注意的是所有的传入与传出参数类型都必须是mwArray类型,需要把你的参数类型需改为此类型。 
string file转换为mwArray:mwArray test_dir(file.c_str()); 
mwArray threshold(25, 1, mxDOUBLE_CLASS);double throld;(25和1是矩阵的大小) 
throld = threshold(t1, 1);类似这样。 
需要添加的头文件#include “mclmcrrt.h” #include “mclmcr.h” #include “mclcppclass.h” 
以及MATLAB代码编译生成的.h文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值