gpt4 book ai didi

在 64 位 Windows 7 上使用 mingw-w64 在 C/C++ 中通过 engOpen 调用 MATLAB 时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:18 24 4
gpt4 key购买 nike

我想弄清楚为什么当我用 engOpen() 调用 MATLAB 引擎时我的 C/C++ 程序崩溃了。下面的代码打印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;
}

The executable crashes at runtime after outputting "Hello World."

更多详情

我正在使用:

  • MATLAB R2012a
  • mingw-w64 gcc 版本 4.8.0
  • 64 位 Windows 7

为了回应一些现有的 SO 问答,我有

  • 确认我正在链接到 C:\Program Files\MATLAB\R2012a\extern\lib\win64\microsoft\libeng.libC:\Program Files\MATLAB\R2012a\extern\lib\win64\microsoft\libmx.lib
  • 在我的路径中包含 C:\Program Files\MATLAB\R2012a\bin\win64,其中包含 libengine.dlllibmx.dll
  • 从 Windows 命令提示符运行 matlab/regserver

请注意,如果我将 engOpen() 放在未执行的 if 语句中,则代码会运行完成。

我也不认为这是 mingw 固有的,因为在 32 位 WinXP 机器上,我使用带有 mingw32 的 MATLAB 2011 没有问题。

编译器和链接器输出在 http://pastebin.com/z9CAsb6X

最佳答案

您是如何链接 *.lib 的?在我的项目中,我使用 PostgreSQL 而不是链接提供的 MSVC 编译的 *.lib,我必须将它转换为 *.a。我认为这是一个像这样的程序:

http://oldwiki.mingw.org/index.php/CreateImportLibraries

关于在 64 位 Windows 7 上使用 mingw-w64 在 C/C++ 中通过 engOpen 调用 MATLAB 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16175054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com