を使用して MATLAB のエンジンを呼び出すと、C/C++ プログラムがクラッシュする原因を突き止めようとしていengOpen()
ます。以下のコードは、出力Hello World
してからAPPCRASH
.
このクラッシュの原因は何ですか、またはここからデバッグするにはどうすればよいですか?
testMATLAB.c
#include <stdio.h>
#include "engine.h"
int main(){
printf("Hello World.\n");
Engine *ep;
if (!(ep = engOpen(NULL))) {
printf("Can't start MATLAB engine\n");
} else {
printf("Opening Matlab Engine\n");
}
return 0;
}
詳細
私は使っている:
- MATLAB R2012a
- mingw-w64 gcc バージョン 4.8.0
- 64 ビット Windows 7
多くの既存の SO Q&A に応えて、私は
- と にリンクしていることを確認しまし
C:\Program Files\MATLAB\R2012a\extern\lib\win64\microsoft\libeng.lib
たC:\Program Files\MATLAB\R2012a\extern\lib\win64\microsoft\libmx.lib
。 C:\Program Files\MATLAB\R2012a\bin\win64
とを含む私のパスに含まlibengine.dll
れていますlibmx.dll
matlab /regserver
Windowsコマンドプロンプトから実行
engOpen()
実行されていないステートメント内に配置するif
と、コードが最後まで実行されることに注意してください。
また、これは mingw に固有のものではないと思います。なぜなら、32 ビットの WinXP マシンでは、MATLAB 2011 をmingw32
.
コンパイラとリンカーの出力はhttp://pastebin.com/z9CAsb6Xにあります