看来问题是MATLAB和Visual Studio版本不匹配。如果我使用MatLab与Visual Studio 2013中,2016没有问题,所有一切都非常完美。
MatLab c++共享Dll库初始化的问题
39视图(30天)
显示旧的评论
我用Matlab 2013和Visual Studio 2013。我试图用MatLab编译dll从c++控制台应用程序。我简单的Matlab测试dll和控制台应用程序编译64位机器(我确信它们通过dumpbin 64位)。我也有正确版本的MCR安装在我的机器上(即使它不是必需的)。
我设置编译器使用“mbuild设置”命令。
我使用这个命令行编译我的m文件:“mcc - v - w cpplib: mylib - t链接:自由myFunc”成功。
在控制台应用程序中,我包括这些库:mylib。自由,mclmcrrt。自由,mclmcr。自由,libmx。自由,libmat。自由使用图书馆这个路径“C: \ Program Files \ MATLAB \ R2013a \走读生\ lib \ win64 \微软”
当我调试我的程序,它成功地初始化MCR使用这叫:“mclInitializeApplication (NULL, 0)“但当我叫“mylibInitialize()来初始化我的图书馆,程序崩溃。它甚至不抛出axception所以我不能处理它使用try / catch块。它给了未处理的异常和访问vialoation错误消息。
这些是样品调试输出消息我;
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:0 x000000e263ef4e48 xercesc_2_7:: NoSuchElementException内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:0 x000000e263ef4eb8 xercesc_2_7:: SchemaDateTimeException内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:0 x000000e263ef4e40 xsd_binder:: MalformedDocumentError内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:0 x000000e263ef4e48 xercesc_2_7:: NoSuchElementException内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:boost:: 0 x000000e2643ff630 thread_interrupted在内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:0 x000000e263efa640 xsd_binder:: MalformedDocumentError内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:boost:: 0 x000000e2642ffcd0 thread_interrupted在内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:std:: 0 x000000e264eff530 runtime_error在内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:CryptoPP: 0 x000000e264efb0f0 AES_PHM_Decryption:: InvalidCiphertextOrKey内存位置。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:在内存位置0 x000000e264ef4c10 tfFailedException。
第一次机会异常在MatlabTest 0 x00007ffa22761f08。exe:微软c++例外:在内存位置0 x000000e264ef9410 varflowFailedException。线程x3550已经退出代码0 (0 x0)。“MatlabTest。exe”(Win32):加载“C: \ MATLAB程序文件\ \ R2013a \ bin \ win64 \ hgbuiltins.dll”。不能找到或打开PDB文件。第一次机会异常在0 x0000000000b46e60 MatlabTest (m_interpreter.dll)。exe: 0 xc0000005:访问违例0 x0000000064ef3b90阅读位置。未处理的异常在0 x0000000000b46e60 MatlabTest (m_interpreter.dll)。exe: 0 xc0000005:访问违例0 x0000000064ef3b90阅读位置。
程序的[12952]MatlabTest。exe”退出代码0 (0 x0)。
我安装MCR另一台机器上,并试图运行这个控制台应用程序。我得到了相同的结果。
我试着罗兰Vigenere例子,
它没有奏效。
我找不到任何有用的回答在Matlab社区或stackoverflow。
你知道这是为什么吗?
谢谢
0评论
接受的答案
更多的答案(3)
霍斯特Steuer
2017年11月20日
有同样的问题与MATLAB 2015 b、2016 a, 2017 b, Visual Studio 2015和2017。程序坠毁”mylibInitialize()或返回一个空的错误消息。发现程序实际上Visual Studio之外的工作,即从命令行开始。解决它通过设置调试器类型管理只有在Visual Studio项目(属性- >配置属性- > - >调试调试器类型)。
Anatoly Khamukhin
2018年1月25日
编辑:Anatoly Khamukhin
2018年1月25日
问题是在MATLAB使用java。
调用
常量char * args [] = {" -nojvm "};
常量int数= sizeof (args) / sizeof (args [0]);
mclInitializeApplication (args,计算)
而不是
mclInitializeApplication (NULL, 0)
对我来说解决同样的问题。