我试图弄清楚为什么我的 C/C++ 程序在我用engOpen()
. 下面的代码打印Hello World
然后抛出一个APPCRASH
.
什么可能导致此崩溃,或者我如何从这里调试?
测试MATLAB.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
andC:\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