开发环境:
vs2010 + matlab r2016a
步骤一:matlab中生成动态库
- 创建文本文件 D:\matlabTest\myadd.m,文件内容参看下面代码部分。注意:如果把myadd.m文件直接放在d盘根目录下,matlab中编译生成动态库时,会报错“文件名、目录名或卷标语法不正确”,原因不明。
function c = myadd(a,b)
c = a+b;
end
- 在matlab命令行窗口执行如下命令,生成动态库文件:
编译完成后,会在D:\matlabTest目录下生成如下文件:
步骤二:在c++中调用动态库中的函数
- 新建“Win32控制台程序”;
- 添加附件包含目录;
3.添加附加库目录:
4.添加附加依赖库:
- 拷贝matlab编译生成myadd.h和myadd.lib文件到VC工程目录下;
- 拷贝matlab生成的myadd.dll和myadd.ctf(必须要有,负责运行时初始化dll库会失败)文件到VC可执行文件所在目录下;
- 测试程序代码如下:
- 编译VC工程,报错“error C3861: “myaddinitialize”: 找不到标识符”,原因是matlab是64位的,生成的dll库也是64位的,而VC测试程序是32位程序,把VC测试程序改为生成64位程序就可以了;
- 运行结果如下: