关于如何使用VC调用matlab engine编程
刚开始学使用VC调用matlab engine编程的时候,遇到很多问题,就去百度找解决方法,但发现根本解决不了我的问题,因为网上大部分实例和步骤都是在matlab6.5和vc++6.0环境下完成的,但是现在我用的是matlab2010a,所以会出现很多环境配置的问题,写本文的目的是总结用我在用VC调用matlab engine编程过程中出现的问题和解决办法。
Matlab Engine 采用Client/Server的方式,通过ActivcX通道和Matlab接口来实现在VC编程环境中直接调用matlab中的指令。调用使用的函数是:engEvalSting。
下面是自己的实践过程:
如果是第一次使用,则要设置一下Visual C++6.0 编程环境中的include 和lib的路径指向。我的matlab2010安装在D盘目录D:\MATLAB 2010
一、设置VC相关属性。
(1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for 下拉列表中选择Include Files,添加路径:D:\MATLAB 2010\extern\include (这是我电脑中Matlab的安装路径);再选择下拉列表中的 Library Files,添加路径:D:\MATLAB 2010\extern\lib\win32\microsoft(我电脑中Matlab 的安装路径,但是在我查看资料的时候看到很多是
D:\MATLAB2010\extern\lib\win32\microsoft\msvc60这个路径,但是我用
的是MatlabR2010a,msvc60是matlab6.5老版本才有的,10.0版本没有这个文件,所以我们把路径设到D:\MATLAB 2010\extern\lib\win32\microsoft 就可以了)。
(2)添加库文件: 通过菜单 Projects\settings,进入 Link 页面,在Object/Library Modules 框中,添加库文件名:libmx.lib 、libmat.lib 、libeng.lib。每个新的工程文件都要单独添加库文件
二、下面来进行VC编程
首先,运行VC向导,新建一个工程文件如下:
接下来选择一个对话框程序作为简单示例:
点击”Finish”可以完成自动生成一个工程框架。
下面来设计界面,我们来简单的添加一个按钮并为其添加响应函数:
生成的按钮响应函数:
好了至此VC部分框架已经搭好。下面来进入调用engine部分。
在编写函数调用engine之前,首先要设置一下链接库(每个工程都要设置一次的,而前面的路径设置不必)。
在Object\Library modules文本框中添加:libmx.lib libmat.lib libeng.lib 接下来,在StdAfx.h 文件头中加入:
先介绍一下MATLAB引擎API函数:
最后在按钮响应函数中输入:
到此,这个程序已经可以编译没有错,但运行时会出现运行时出现丢失libeng.dll等动态链接库的对话框,我在网上查资料,并没有得到很满意结果,其实还是环境配置的问题,只要在我的电脑—高级—环境变量—系统变量path中包含路径D:\MATLAB 2010\bin\win32\即可(注意:这还是我电脑中matlab的安装路径)
现在可以看到运行界面了
但点击“调用matlab”按钮时会出现对话框,这个问题是我家王老师帮我解决的,解决的过程如下:
点击按钮后调用matlab生成的正弦线和画出的matlab自带的小丑图像:
到此程序的环境设置、和出现的所有可能问题以及解决办法都为但大家展示了。希望大家有所收获。