2013-02-13 125 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