1

Windows 7 の VS2010 で基本的な Matlab enginedemo.cpp を実行しようとしていますが、コードを実行しても、次のようになります。

`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\microsoftに設定しています。

C/C++ -> 追加のインクルード ディレクトリ: {MatlabRoot}\R2012b\extern\include

リンカー -> 一般 -> 追加のライブラリ ディレクトリ: {MatlabRoot}\R2012b\extern\lib\win64\microsoft

Linker->Input->Additional Dependencies: libmx.lib;libmat.lib;libeng.lib

私のMatlabバージョンも登録されているため、エラーは発生しません。

これに関する他のいくつかのstackoverflowの質問を検索しましたが、それらのほとんどはパス変数から古いバージョンのmatlabを削除することで問題を解決しているように見えましたが、うまくいきませんでした。

4

1 に答える 1

0

32 ビット アプリケーションで 64 ビット DLL をロードすることはできません。64 ビットの matlab を使用する場合は、64 ビットのコンソール アプリケーションを作成する必要があります。

PATH に {MatlabRoot}\bin\win64 を含める必要があります (libeng.dll およびその他の matlab エンジン ライブラリがあります)。これにより、アプリケーションは実行時に matlab エンジン ライブラリを見つけることができます。

コマンドプロンプトから「matlab /regserver」を実行します。(Matlab 2012a から COM コンポーネントを再登録するため - 必須ではないかもしれませんが、念のために)

お役に立てれば。

于 2013-02-14T12:38:31.193 に答える