首页 > 其他分享 >VS2019调用Matlab2019b生成的dll时初始化异常

VS2019调用Matlab2019b生成的dll时初始化异常

时间:2023-06-20 19:11:38浏览次数:52  
标签:初始化 调用 VS2019 dll VS Matlab2019b MATLAB 版本 异常

在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

主要参考:

Matlab与C++混合编程

解决办法:

属性-调试(debugging)-调试器类型(debugger type):自动(auto)修改成混合(mixed)

之后,我发现将调试器类型改为混合,即使在异常设置中不取消勾选Win32 Exceptions,程序也能正常运行,且没有异常信息。

 

标签:初始化,调用,VS2019,dll,VS,Matlab2019b,MATLAB,版本,异常
From: https://www.cnblogs.com/zzzsj/p/17494458.html

相关文章

  • DisableThreadLibraryCalls与DLLMain死锁
    DisableThreadLibraryCalls与DLLMain死锁 1、首先写个简单的DLL,用来验证1234567891011121314151617181920212223242526272829303132BOOL APIENTRYDllMain( HMODULE hModule,                       ......
  • GetModuleHandle("qq.dll");hDll_debug2=LoadLibrary("..\\qq\\Debug\\qq.dll")
    //qq.cpp:DefinestheentrypointfortheDLLapplication.//#include"stdafx.h"#include<stdio.h>BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved ......
  • 白名单rundll32加载shellcode上线metasploit(nim学习系列)
    白名单rundll32加载shellcode上线metasploit监听metasploitmsfconsole-x"useexploits/multi/handler;setlhost192.168.0.101;setlport443;setpayloadwindows/x64/meterpreter/reverse_tcp;exploit"生成shellcodemsfvenom-pwindows/x64/meterpreter/r......
  • QGIS3.22.0+VS2019 window10编译
    首先感谢博客 济南友泉软件有限公司提供的顺序教程。博客地址:https://blog.csdn.net/qq_26221775/article/details/122792445这篇博客主要是表示编译时遇到的坑。1.一定使用vs2019进行编译。我刚开始想使用vs2017编译。因此遇到了两个坑。(1)vs2017编译qgis_cor......
  • 驱动开发:内核RIP劫持实现DLL注入
    本章将探索内核级DLL模块注入实现原理,DLL模块注入在应用层中通常会使用CreateRemoteThread直接开启远程线程执行即可,驱动级别的注入有多种实现原理,而其中最简单的一种实现方式则是通过劫持EIP的方式实现,其实现原理可总结为,挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,并......
  • .NET 使用ILPack组件将程序集保存成dll
    本文介绍使用ILPack组件将程序集保存成dll.netcore版本不再支持使用AssemblyBuilder.Save的方式将程序集保存成dll具体讨论https://github.com/dotnet/runtime/issues/15704可以使用ILPack组件将程序集保存成dll,以下为官方案例varassembly=Assembly.GetAssembly(t);......
  • 驱动开发:内核LoadLibrary实现DLL注入
    远程线程注入是最常用的一种注入技术,在应用层注入是通过CreateRemoteThread这个函数实现的,该函数通过创建线程并调用LoadLibrary动态载入指定的DLL来实现注入,而在内核层同样存在一个类似的内核函数RtlCreateUserThread,但需要注意的是此函数未被公开,RtlCreateUserThread其实是对N......
  • 使用.net4引用Delph写的动态链接库DLL,you经验的大佬看一下
    vs2017、net4、无法引用?是Delph动态链接库的问题吗?也把dll放bin同目录底下啦这个是用vs打开的dll是机器代码请有经验的大佬指点一手......
  • spdlog使用头文件或dll的宏设置
    宏作用SPDLOG_HEADER_ONLYspdlog只使用头文件FMT_HEADER_ONLYfmtlib只用用头文件SPDLOG_COMPILED_LIBspdlog使用dllSPDLOG_SHARED_LIBspdlog使用dll,实际可以不设置,单独设置SPDLOG_COMPILED_LIB就可以SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACESPDLOG_TRAC......
  • Solve “missing iconv.dll” issue on Win7 X64
    AfterinstalledthemobilemecontrolpanelonmyWin7X64,themobilemecontrolpanelcannotbelaunchedwitherrormessage"Missingiconv.dll".Evengettingthismessagewhensystembootup.Triedtocopyiconv.dllinto......