matlab和c++混合编程---matlab和vs的环境配置问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yimiyangguang185/article/details/52640566

matlab调用c++代码的详细步骤已经在我的另外一篇博客中(matlab和c++混合编程---方法和步骤)说明,这里不再重复。按照它说明的步骤,mex编译一个简单的.cpp文件没有任何问题。但是如果你编译的.cpp文件里面include和lib了一些外部的头文件和静态库,例如用到了opencv库或是某个深度相机的SDK等,还是简单的mex这个cpp文件就会报错,提示找不到某个头文件。这是因为matlab和vs的环境配置没有完成。我就是被这个问题困扰了两天,现在贴出来,以后谨记。

首先,在vs中配置环境。

将你用到的SDK的头文件,静态库和动态库配置好,详细过程参见 vs项目中头文件(.h)静态库(.lib)和 动态库(.dll )的路径和配置问题

将matlab安装目录下的extern文件夹中的包含文件夹,静态库文件夹配置到vs项目中,例如我的是‘D:\programs installing\matlab2016\extern\include’和‘D:\programs installing\matlab2016\extern\lib\win64\microsoft’,这一步可以参考我转载的博文matlab和c++混合编程---方法和步骤

然后,在matlab中配置环境。

matlab的环境配置和vs不同,MATLAB里面都是用命令配置编译环境的,第一步,mex -setup,根据提示一步一步来就可以了;第二步,编译,如果是简单的cpp文件,直接mex xxxxxx.cpp就可以了,如果这个.cpp文件里面包含附加依赖项和外部静态库,仅仅简单的mex这个文件就会报错,这时需要在mex这个文件的同时,将用到的外部包含库和静态库添加进去(详细查阅一下mex这个函数的用法),例如我需要将包含目录D:\myo-sdk-win-0.9.0\include,lib目录D:\myo-sdk-win-0.9.0\lib以及lib文件myo32myo64配置进去,就需要这样命令:mex SEMGStream.cpp -I'D:\myo-sdk-win-0.9.0\include' -L'D:\myo-sdk-win-0.9.0\lib' -lmyo32 -lmyo64

需要说明的是,matlab的环境配置跟平时的添加路径不一样,及时你在matlab的设置路径里面将用到的外部库目录添加进去,用mex编译的时候还是会报错,只能通过mex函数的参数进行路径包含,我就是被这个误区困扰了两天,希望看到的朋友避免同样的问题。






猜你喜欢

转载自blog.csdn.net/yimiyangguang185/article/details/52640566