Visual Studio调用MATLAB的配置 (转)

Visual Studio调用MATLAB的配置 (转)

在用C写程序时,有时会遇到数值计算问题,如矩阵的计算、优化问题、解微分方程等等。这些数值计算问题如果自己来实现的话,一来太费时间,二来自己的实现方案效率未必高。解决方法就是依靠MATLAB了。用过MATLAB的人都知道,它提供了丰富的数值计算函数。在C程序中调用matlab函数即可轻松解决问题。在网络博文《Matlab, Visual Studio, C, C++, and DLL的一些汇总》中,博主给出了Visual Studio调用MATLAB时常见的一些资料。

在进行C和MATLAB的混合编程前,我们需要对Visual Studio和MATLAB进行配置。

一、Visual Studio的配置(VS2010为例)

1、在解决方案中对工程名进行右键点击,选择“属性”,进入属性页面;

2、进入配置属性的“VC++目录”,如下所示:Visual Studio调用MATLAB的配置 (转)_第1张图片

其中,红色圈中的选项是需要设置的。

3、编辑“包含目录”,输入“C:\Program Files\MATLAB\R2010b\extern\include”(须与实际安装位置相同)

Visual Studio调用MATLAB的配置 (转)_第2张图片

4、编辑“库目录”,输入“”(须与实际安装位置相同)

Visual Studio调用MATLAB的配置 (转)_第3张图片

至此,Visual Studio的设置已经完成。

由于该方法是针对工程所做的设置,因此每新建一个工程都需要如此设置。

此外还需要设置动态链接库,若不加以设置,则会报如下错误:Visual Studio调用MATLAB的配置 (转)_第4张图片

以下是设置dll的方法,共有2种方法:

1、在工程中设置dll目录

拷贝自网络http://blog.sina.com.cn/s/blog_6163bdeb0100qd49.html。未验证成功。

右击工程/属性,打开项目属性页,选择链接器/输入,在附加依赖项编辑框中,添加文件名libmx.lib libmat.lib libeng.lib。

Visual Studio调用MATLAB的配置 (转)_第5张图片 
步骤3)对每个项目都要单独设定。

4) 如此设置后,能够正常编译,但运行时报错说找不到dll文件,如下

Visual Studio调用MATLAB的配置 (转)_第6张图片

而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即可,如下图。

Visual Studio调用MATLAB的配置 (转)_第7张图片

 

如果以上设置完成后,运行仍报错,可以尝试将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”下。

二、MATLAB的配置(MATLAB2010b为例)

1、在matlab命令行中输入“mex -setup”,按提示选择合适的选项。

Visual Studio调用MATLAB的配置 (转)_第8张图片

2、在matlab命令行中输入“mbuild -setup”,按提示选择合适的选项。Visual Studio调用MATLAB的配置 (转)_第9张图片

对于matlab的配置只需要做一次即可,以后无需再进行此配置。

三、混合编程

C和MATLAB的混合编程方法较多,我们将在后续博文中进行专门介绍。

下面两图总结了MATLAB与其他编程语言的接口。

Visual Studio调用MATLAB的配置 (转)_第10张图片
接口类型如下:
Visual Studio调用MATLAB的配置 (转)_第11张图片
具体的方法略。

你可能感兴趣的:(Visual Studio调用MATLAB的配置 (转))