【问题标题】:Matlab Engine ProblemsMatlab 引擎问题
【发布时间】:2013-02-13 16:46:18
【问题描述】:

我正在尝试在 Windows 7 上的 VS2010 中运行基本的 Matlab enginedemo.cpp,无论我做什么代码:

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

总是出错。

我的计算机上同时安装了 MatlabR2012b 和 MatlabR2012a,但我卸载了 MatlabR2012a,然后从我的 path 变量中删除了对它的所有引用。

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

我也已经将调试环境设置为:{MatlabRoot}\R2012b\extern\lib\win64\microsoft

C/C++->其他包含目录:{MatlabRoot}\R2012b\extern\include

链接器->常规->其他库目录:{MatlabRoot}\R2012b\extern\lib\win64\microsoft

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

我的 Matlab 版本也已注册,因此不应导致错误。

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

【问题讨论】:

    标签: matlab 32bit-64bit matlab-engine


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 我在配置管理下把项目改成x64还是不行,我已经有{MatlabRoot}\R2012b\etc\win64........{MatlabRoot}\R2012b\bin\win64和我的路径变量上的 {MatlabRoot}\R2012b\bin 我认识的另一个人有完全相同的设置,它对他有用,唯一的区别是他只安装了 Matlab R2012b
    • 如果有人像我一样在运行引擎时遇到问题,请以管理员身份运行 Matlab,然后键入 !matlab/regserver 修复了问题...。我总是会从 cmd 收到错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2010-11-15
    • 1970-01-01
    • 2011-06-18
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多