Visual Studio调用MATLAB的配置 (转)
在用C写程序时,有时会遇到数值计算问题,如矩阵的计算、优化问题、解微分方程等等。这些数值计算问题如果自己来实现的话,一来太费时间,二来自己的实现方案效率未必高。解决方法就是依靠MATLAB了。用过MATLAB的人都知道,它提供了丰富的数值计算函数。在C程序中调用matlab函数即可轻松解决问题。在网络博文《Matlab, Visual Studio, C, C++, and DLL的一些汇总》中,博主给出了Visual Studio调用MATLAB时常见的一些资料。
在进行C和MATLAB的混合编程前,我们需要对Visual Studio和MATLAB进行配置。
1、在解决方案中对工程名进行右键点击,选择“属性”,进入属性页面;
其中,红色圈中的选项是需要设置的。
3、编辑“包含目录”,输入“C:\Program Files\MATLAB\R2010b\extern\include”(须与实际安装位置相同)
4、编辑“库目录”,输入“”(须与实际安装位置相同)
至此,Visual Studio的设置已经完成。
由于该方法是针对工程所做的设置,因此每新建一个工程都需要如此设置。
以下是设置dll的方法,共有2种方法:
1、在工程中设置dll目录
拷贝自网络http://blog.sina.com.cn/s/blog_6163bdeb0100qd49.html。未验证成功。
右击工程/属性,打开项目属性页,选择链接器/输入,在附加依赖项编辑框中,添加文件名libmx.lib libmat.lib libeng.lib。
4) 如此设置后,能够正常编译,但运行时报错说找不到dll文件,如下
而libmx.dll是存在于D:\Program Files\MATLAB\R2010a\bin\win32文件夹中,而在Win7系统变量里Matlab在安装的时候时只写入了路径D:\Program Files\MATLAB\R2010a\bin,故系统不会自动到其子文件中找dll,从而报错说找不到文件,这也解释了为什么旧版本的Matlab无此问题,因为可能旧版本的Matlab中没有将这些dll分离放到win32子文件夹中。所以只要在系统变量中包含路径D:\Program Files\MATLAB\R2010a\bin\win32即可,如下图。
如果以上设置完成后,运行仍报错,可以尝试将VS2008关掉再启动,我就是这样,环境变量设置好后,仍然报错,重启电脑也解决不了问题,后尝试关掉工程,再启动运行就OK了!
2、将所需dll文件拷贝到系统dll目录中
已经试验成功,而且一次拷贝,即可保证以后所有工程均不会出现类似问题。
调用matlab需要的dll文件在目录“C:\Program Files\MATLAB\R2010b\bin\win64”下。(须与实际安装位置对应)
Visual Studio运行时查找dll的路径是目录“C:\Windows\System32”下。
因此,将目录“C:\Program Files\MATLAB\R2010b\bin\win64”下的所有dll文件都拷贝到了目录“C:\Windows\System32”下。
1、在matlab命令行中输入“mex -setup”,按提示选择合适的选项。
2、在matlab命令行中输入“mbuild -setup”,按提示选择合适的选项。
对于matlab的配置只需要做一次即可,以后无需再进行此配置。
C和MATLAB的混合编程方法较多,我们将在后续博文中进行专门介绍。
下面两图总结了MATLAB与其他编程语言的接口。