在Visual Studio中使用C++调用Matlab程序
我目前在写一个用VS和Matlab混编的程序,由于之前的版本(VS2005+MATLAB2010b)太老了,现在想换用VS2019+MATLAB2019b的版本。我原本以为会很简单就能完成配置,没想到在运行时会出现下面的问题。(帧不在模块中。在加载的模块中未找到当前堆栈帧。无法显示此位置的源代码。)
VS与MATLAB版本选择
如上所述,本次我用的软件是VS2019和MATLAB2019b,如果你用的是其他版本的软件可以在MATLAB官网查找,此版本的MATLAB支持哪个版本的编译器。
https://ww2.mathworks.cn/support/requirements/previous-releases.html
在Supported Compilers一栏中,点击Details,即可查看支持的编译器,已根据MATLAB版本选择相应版本的VS,或者根据当前的VS版本选择要配合编程的MATLAB版本。
VS与MATLAB混编的环境配置
各个版本的环境配置大同小异,能搜到的详细步骤比较多,下面列出对我比较有帮助的博文。
在Visual Studio中使用C++中调用MATLAB程序
C++调用Matlab生成的DLL动态链接库进行混合编程(win10+VS2015+Matlab2016b)
VS与matlab混合编程
初始化异常的解决
检查代码后,发现在调用初始化时[名字]Initialize()
,程序就会引发此异常。
0xc0000005处理
一开始我在网上搜解决方案时,一直纠结在“帧不在模块中。在加载的模块中未找到当前堆栈帧。无法显示此位置的源代码。”这句话之中,后来试着搜了异常信息0xc0000005:读取位置0x0000000000000008
,发现了一个博文就能够解决这个问题。
matlab导出dll及c++调用matlab初始化异常处理
这里的解决办法是:
1.调试–>窗口–>异常设置
2.取消勾选Win32 Exceptions
但是,我做了这一步后,程序能够跑出来了,只是输出窗口会有很多异常信息xsd_binder::MalformedDocumentError
,下面可以解决这个问题。
Debug错误:xsd_binder::MalformedDocumentError
主要参考:
解决办法:
属性-调试(debugging)-调试器类型(debugger type):自动(auto)修改成混合(mixed)
之后,我发现将调试器类型改为混合,即使在异常设置中不取消勾选Win32 Exceptions,程序也能正常运行,且没有异常信息。
标签:初始化,调用,VS2019,dll,VS,Matlab2019b,MATLAB,版本,异常 From: https://www.cnblogs.com/zzzsj/p/17494458.html