【发布时间】:2016-05-31 19:19:32
【问题描述】:
我正在使用 Matlab 2013a 和 Visual Studio 2013。我正在尝试从 C++ 控制台应用程序使用 MatLab 编译的 dll。我的简单 Matlab 测试 dll 和控制台应用程序是为 64 位机器编译的(我通过 dumpbin 确保它们是 64 位的)。我的机器上也安装了正确版本的 MCR(即使没有必要)。
我使用“mbuild -setup”命令设置我的编译器。
我使用这个命令行成功编译了我的 .m 文件:“mcc -v -W cpplib:mylib -T link:lib myFunc”。
在我的控制台应用程序中,我包含以下库:mylib.lib、mclmcrrt.lib、mclmcr.lib、libmx.lib、libmat.lib 并使用此路径中的库“C:\Program Files\MATLAB\R2013a\ extern\lib\win64\microsoft"
当我调试我的程序时,它使用以下调用成功地初始化了 MCR:“mclInitializeApplication(NULL, 0)”但是当我调用“mylibInitialize()”以初始化我的库时,程序崩溃了。它甚至不会抛出异常,因此我无法使用 try/catch 块处理它。它给出了未处理的异常和访问 vialoation 错误消息。
这些是我得到的示例调试输出消息;
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E263EF4E48 处的 xercesc_2_7::NoSuchElementException。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E263EF4E40 处的 xsd_binder::MalformedDocumentError。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E263EF4E48 处的 xercesc_2_7::NoSuchElementException。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E2643FF630 处的 boost::thread_interrupted。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E2642FFCD0 处的 boost::thread_interrupted。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:CryptoPP::AES_PHM_Decryption::InvalidCiphertextOrKey 在内存位置 0x000000E264EFB0F0。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E264EF4C10 处的 tfFailedException。
MatlabTest.exe 中 0x00007FFA22761F08 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000E264EF9410 处的 varflowFailedException。线程 0x3550 以代码 0 (0x0) 退出。 “MatlabTest.exe”(Win32):加载“C:\Program Files\MATLAB\R2013a\bin\win64\hgbuiltins.dll”。无法找到或打开 PDB 文件。
MatlabTest.exe 中 0x0000000000B46E60 (m_interpreter.dll) 的第一次机会异常:0xC0000005:访问冲突读取位置 0x0000000064EF3B90。 MatlabTest.exe 中 0x0000000000B46E60 (m_interpreter.dll) 处未处理的异常:0xC0000005:访问冲突读取位置 0x0000000064EF3B90。
程序“[12952] MatlabTest.exe”已退出,代码为 0 (0x0)。
我将 MCR 安装到另一台机器并尝试运行此控制台应用程序。我得到了同样的结果。
我也试过 Loren 的 Vigenere 例子, http://blogs.mathworks.com/loren/2011/02/03/creating-c-shared-libraries-and-dlls/#respond
也没有用。
你知道为什么会这样吗?
谢谢
【问题讨论】:
标签: c++ matlab dll crash matlab-compiler