c++调用matlab导出的dll及显式隐式调用

  • A+
所属分类:C++ 原创 开发&源码

公司引入了第三方公司的算法,而第三方公司只提供matlab导出的dll,java是无法调用的,于是不得不考虑再用c++封装一层dll供java调用。
本人c++只是业余级,matlab更是路人,但公司在这方面也没什么人会,我只好继续硬着头皮开始探索之路。

环境配置

创建vc++项目后:

  1. 右键项目 - 属性 - VC++目录 - 包含目录,添加..\MATLAB\MATLAB Runtime\v90\extern\include
  2. 库目录添加:..\MATLAB\MATLAB Runtime\v90\extern\lib\win64\microsoft
  3. 链接器 - 输入 - 附加依赖项,添加以下几个lib:

mclmcr.lib
mclmcrrt.lib
libmx.lib
libmex.lib
libmat.lib
libeng.lib

c++调用matlab导出的dll及显式隐式调用
c++调用matlib的dll.jpg

DLL调用

调用matlab的dll大概分为三个过程,1. 初始化Initialize 2. 调用功能函数 3. 终止Terminate

显式调用

在c++中,dll的调用分为显式和隐式,显示调用的好处是只需要知道dll和里面的函数即可完成调用,不需要.h文件和.lib文件,以下是显示调用的实例

隐式调用

隐式调用则需要.h文件和.lib文件,将头文件导入项目中,然后使用以下代码实现,还是相同的三个方法,隐式调用需要处理头文件,比显示调用麻烦,但是代码上比显示看上去简洁(也许是因为我的demo比较简单)

原文:简书ThinkinLiu 博客: IT老五

常见问题

1. dll找不到

如果是相对目录,是相对于你所见的项目目录而言的,放在在项目目录下即可

2. Initialize初始化报错

这个一般是matlab环境问题或者是加载不到dll导致的

weinxin
我的微信公众号
我的微信公众号扫一扫
Liu, Thinkin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: