VC 调用 Matlab 编写的 DLL
作者:(小木头)Margin 时间:2011-04-08
一. 基本环境:
1. Microsoft Visual Studio 2008 SP1(VC++);
2. MATLAB Compiler Runtime;
3. OS:Windows XP。
二. 基本方法:
1.经验说明:
&&&&&& 首先值得说明的是,经过不断的尝试和搜集资料,发现要想在 VC++ 中调用
MATLAB 编写的 DLL,必须至少要有 MATLAB Compiler Runtime 环境,也就是说得
先安装 MCRInstaller.exe(约 160M ),当然,直接安装 MATLAB R2009a(约
4.0G ) 也 可 以 。 显 然 , 如 果 您 仅 仅 想 用 VC++ 调 用 MATLAB 编 写 的 DLL , 安 装
MCRInstaller.exe 就足够了,安装完之后看一下系统环境变量的 Path 里是否已经添加
了其路径,如果没有需手动添加,一般会有的。
&&&&&&& 此 外 , 值 得 注 意 的 是 , 我 遇 到 了 这 样 的 情 况 : 起 初 我 只 是 安 装 了
MCRInstaller.exe,此时 VC++可以正常调用 MATLAB 编写的 DLL,之后,我又想装
下 MATLAB R2009a,安装完之后奇怪的事情出现了,之前正常的调用,居然不行了,
在调用 libdrawAMResultsInitialize()【其中:libdrawAMResults 是 DLL 的名称】
初始化 lib 时,返回值永远是 false,无法正常调用了。又经过不断的尝试和搜集资料发现,
应该是安装 MATLAB R2009a 的时候和之安装的 MCRInstaller.exe 发生了“共享冲突”,
之后,我将 MATLAB R2009a 卸载了,卸载后一定用系统清理工具清理一下系统,可能
是还有残存的注册表信息还是文件,会导致还是无法正常调用 MATLAB 编写的 DLL,清
理之后,奇迹再次发生了,又可以正常调用了。
2.调用细节步骤:
(1)将 MATLAB 生成的:*.h、*.lib、*.dll 三个文件拷贝到当前项目的目录下。
(2)设置 VC++项目的属性:
首先,在“配置属性->C/C++->常规”的“附加包含目录”中添加 MCR 的 include 目录的路
评论5