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。
你知道这是为什么吗?
谢谢

接受的答案

cyvz
cyvz 2016年6月15日
看来问题是MATLAB和Visual Studio版本不匹配。如果我使用MatLab与Visual Studio 2013中,2016没有问题,所有一切都非常完美。
3评论

登录置评。

更多的答案(3)

霍斯特Steuer
霍斯特Steuer 2017年11月20日
有同样的问题与MATLAB 2015 b、2016 a, 2017 b, Visual Studio 2015和2017。程序坠毁”mylibInitialize()或返回一个空的错误消息。发现程序实际上Visual Studio之外的工作,即从命令行开始。解决它通过设置调试器类型管理只有在Visual Studio项目(属性- >配置属性- > - >调试调试器类型)。
5个评论
yuanjie李
yuanjie李 2021年3月21日
我的版本是2020 b和vs2019,它的工作原理,非常感谢

登录置评。


Anatoly Khamukhin
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)
对我来说解决同样的问题。

基肖尔
基肖尔 2017年8月21日
你能请提供版本为MATLAB R2016b visual studio版本的兼容性。
同样的问题与MATLAB R2016b visual studio 2013。
1评论
徐俊
徐俊 2020年3月8日
//www.tianjin-qmedu.com/万博1manbetxsupport/requirements/previous-releases.html

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!