2013-02-13 79 views
1

我想在Windows 7上运行在VS2010的基本Matlab的enginedemo.cpp不管我做什么代码:Matlab引擎问题

`if (!(ep = engOpen(""))) { 
    fprintf(stderr, "\nCan't start MATLAB engine\n"); 
    return EXIT_FAILURE; 
}` 

总是错误。

我已经在我的电脑上安装了MatlabR2012b和MatlabR2012a,但是我卸载了MatlabR2012a,然后从我的路径变量中删除了对它的所有引用。

我正在运行x64 MatlabR2012b,并设置了我的VisualC++ Win 32控制台应用程序。

我也已经设置了调试环境到:{MatlabRoot} \ R2012b \的extern \ lib中\ Win64的\微软

C/C++ - >附加包含目录:{MatlabRoot} \ R2012b \的extern \包括

链接器>通用>附加库目录:{MatlabRoot} \ R2012b \的extern \ lib中\ Win64的\微软

链接器>输入 - >附加依赖:libmx.lib; libmat.lib; libeng.lib

我的Matlab版本也被注册,所以不应该导致错误。

我搜索了一些关于此问题的其他stackoverflow问题,他们大多数似乎通过从路径变量中删除旧版本的matlab来解决他们的问题,但它并没有为我工作。

回答

0

您无法在32位应用程序中加载64位DLL。如果您想使用64位matlab,您必须制作64位控制台应用程序。

您的PATH应该有{MatlabRoot} \ bin \ win64(有libeng.dll和其他matlab引擎库),以便您的应用程序可以在运行时找到matlab引擎库。

从命令提示符执行“matlab/regserver”。 (从Matlab 2012a重新注册COM组件 - 可能不是必需的,但可以肯定)

希望这有帮助。

+0

我将项目更改为配置管理下的x64仍然不能正常工作,我已经有{MatlabRoot} \ R2012b \ etc \ win64 ........ {MatlabRoot} \ R2012b \ bin \ win64和{MatlabRoot} \ R2012b \ bin我的路径变量另一个人,我知道有完全相同的设置,它适用于他,唯一的区别是他只有安装了Matlab R2012b – Neppinger 2013-02-14 14:56:13

+0

matlab/regserver修复了这个问题.....谢谢! – Neppinger 2013-02-14 16:01:18

+0

如果有人像我这样的问题运行引擎以管理员身份运行Matlab然后键入!matlab/regserver修复了问题....我总是会从cmd中得到一个错误 – Neppinger 2013-02-14 18:12:36