LoadLibraryEx调用dll时有未经处理的异常,发生访问冲突

news2024/11/16 18:50:24

0x000000000006A220 处的第一机会异常(在 testHFHZDll.exe 中): 0xC0000005: 执行位置 0x000000000006A220 时发生访问冲突。
0x000000000006A220 处有未经处理的异常(在 testHFHZDll.exe 中): 0xC0000005: 执行位置 0x000000000006A220 时发生访问冲突。

最近做一个测试,使用LoadLibraryEx的方式动态调用dll,可以调用成功,也可以断点调试,但是一旦添加std::wstring类或者其他复杂一点的类,就报错,如上图所示。

异常位置:: _CSTD wcslen(_First));

报错位置,如上图所示。

如果函数为空,或者执行简单的加减法,则不报错。

	//用于调试本地函数
	extern DllExport int localCodeTest()
	{
		_tstring stDefPath; //注释掉这句话就不报错

		int a = 10;
		int c = a;

		return 0;
	}

调用代码如下:

	// TODO: 在此添加控件通知处理程序代码
	// dynamic call dll
	HINSTANCE m_hDll = LoadLibraryEx(L"C:\\HFHZTDM.dll", NULL, DONT_RESOLVE_DLL_REFERENCES);

	if (NULL == m_hDll)
	{
		MessageBox(L"Load dll failed!");
		return;
	}
	else
	{
		typedef int (*localCodeTest)();
		localCodeTest m_Fun = (localCodeTest)GetProcAddress(m_hDll,"localCodeTest");
		if (m_Fun == NULL)
		{
			MessageBox(L"Find localCodeTest function failed!");
			return;
		}
		else
		{
			CString str = L"";
			int c = -1;
			c = m_Fun();
			str.Format(L"返回值 = %d", c);
			MessageBox(str);
		}
		FreeLibrary(m_hDll);
	}

后来尝试了各种更改选项和设置,都没有结果,于是改用lib的方式调用dll,最终成功,并且发现这个dll其实依赖了很多其他的dll,初期觉得这可能是调用不成功的原因。

使用lib方式调用:
 

extern "C" __declspec(dllimport) int localCodeTest();


    CString str = L"";
    int c = -1;
    c = localCodeTest();
    str.Format(L"返回值 = %d", c);
    MessageBox(str);

在添加了所有依赖的dll后,再次尝试使用LoadLibraryEx的方式调用,错误依旧,因为怀疑不是依赖造成的此问题。经过此次事件,我发现动态调用和静态调用还不能完全等价,当然,由于目前并没有弄清楚这个地方到底为什么调用失败,所以还不能妄下结论。

如果有大佬知道LoadLibraryEx的方式调用遇到此问题的解决办法,感谢能告知一下。

目前暂用的解决办法就是使用lib方式的调用,问题临时解决,如果你正好也遇到了这个问题,不妨尝试一下用lib的方式调用dll。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1047677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab论文插图绘制模板第116期—带时间刻度的图

之前的文章中,分享了Matlab带线标记的图: 带阴影标记的图: 带箭头标记的图: 带图形标记的图: 带Latex公式的图: 进一步,分享一下带时间刻度的图,先来看一下成品效果: 特别…

步力宝科技爆款产品定位,开创智能物联网新商业

数据显示,中国处于 “亚健康”状态人口数量约占总人口的70%,亚健康是一种临界状态,指介于健康和疾病之间的状态。亚健康是一个动态演变的过程,既有向慢病发展的趋势,也能通过合理的干预使人体重返健康状态,…

垃圾收集器G1ZGC

G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. ​ ​ G1将Java堆划分为多个大小相等的独立区域(Region)&#…

1、Kafka 安装与简单使用

第 1 章 Kafka 概述 1.1 定义 Kafka传统定义: Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka最新定义 : Kafka是 一个开源的 分 布式事件流平台 &#xff08…

【AIGC】只要10秒,AI生成IP海报,解放双手!!! | 京东云技术团队

看完这篇文章,你将学会以下价值连城的内容 1、云端部署(配置不行的小伙伴看) 云端模型放置位置 2、本地部署(配置达标的小伙伴看) 3、运用SD训练IP的流程和技巧(LoRA篇) 4、运用SD稳定生成高…

【C语言】指针与动态内存

文章目录 1. 使用动态内存的意义2. 动态内存分配函数2.1 malloc2.2 free2.3 calloc2.4 realloc 3. 动态内存会被自动释放吗?4. 涉及动态内存常见的错误使用4.1 对NULL指针的解引用操作4.2 未对开辟的动态内存空间初始化4.3 越界访问4.4 对非动态开辟内存使用free释放…

vue-cli项目打包体积太大,服务器网速也拉胯(100kb/s),客户打开网站需要等十几秒!!! 尝试cdn优化方案

一、首先用插件webpack-bundle-analyzer查看自己各个包的体积 插件用法参考之前博客 vue-cli项目中,使用webpack-bundle-analyzer进行模块分析,查看各个模块的体积,方便后期代码优化 二、发现有几个插件体积较大,有改成CDN引用的…

解决github 2FA验证

安装谷歌浏览器插件 身份验证器 https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai 安装后点击这里后,选中github网页提供的二维码,插件会生成一个code,粘贴到github网页需要输入code的地方 验证…

Visual Studio 删除行尾空格

1.CtrlH 打开替换窗口(注意选择合适的查找范围) VS2010: VS2017、VS2022: 2.复制下面正则表达式到上面的选择窗口(注意前面有一个空格): VS2010: $ VS2017、VS2022: $ 3.下面的替换窗口不写入 VS2010: VS2017、VS2022: 4.点选“正则表达式…

UE4蓝图

1、绑定蓝图到对象并打印对象名称 2、变量数值 3、变量字符串 4、侧边栏 5、分支判断 6、倒计时停止 7、每隔一秒执行一次 8、倒计时按条件执行 9、多按键阻断、重置 10、门的状态:开、关、开关 11、一个键盘事件完成多个事件 12、随机抽奖 13、分:秒计时器&#x…

opentelemetry、grafana、Prometheus、jaeger、victoria-metrics 介绍、关系与使用

Opentelemetry OTEL 是 OpenTelemetry 的简称, 是 CNCF 的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方 vendor 无关的服务。 OpenTelemetry 是一组标…

一致性思维链(SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS)

概要 思维链已经在很多任务上取得了非常显著的效果,这篇论文中提出了一种 self-consistency 的算法,来代替 贪婪解码 算法。本方法通过 采样多个思维链集合,然后LLM模型生成后,选择一个最一致的答案作为最后的结果。一致性思维链…

第二十届北京消防展即将开启,汉威科技即将精彩亮相

10月10日~13日,第二十届中国国际消防设备技术交流展览会,将在北京市顺义区中国国际展览中心新馆隆重举行。该展会由中国消防协会举办,是世界三大消防品牌展会之一,本届主题为“助力产业发展,服务消防救援”。届时将有4…

控价维权的意义是什么

品牌为什么要做控价,其目的又是什么,控价是品牌管控渠道的一种方式,通过控价,品牌可以达到管控渠道价格的目标,同时在管控的过程中,可以及时发现渠道中的低价、假货、窜货链接,并及时将这些链接…

山海鲸数字孪生金融解决方案:开创智能金融新时代

在金融行业的数字化浪潮中,数字孪生技术正以惊人的速度崭露头角。这项技术不仅改变了金融机构的运营方式,还为金融从业者提供了更多机会来提高效率、降低风险以及提供更加个性化的服务。为了解决这一需求,山海鲸可视化退出一系列智慧金融解决…

MySQL面试题-索引的基本原理及相关面试题

先了解一下MySQL的结构 下面我们重点讲一下存储引擎 MySQL的数据库和存储数据的目录是一一对应的,这些数据库的文件就保存在磁盘中对应的目录里 下面我们来看一下对应的具体数据文件 .frm是表的结构,不管什么样的索引都会有 .ibd代表我们现在使用的存…

智慧灯杆网关管理平台:城市建设的智慧化之道

随着城市化进程不断推进,城市公共服务和管理的数字化、智能化已经成为必然趋势。而要实现从“灯杆”到“智慧灯杆”的转变,构建新一代城市基础设施,就需要以智慧灯杆管理平台为核心的解决方案。 星创易联自主研发的智慧灯杆管理云平台,是新型城市物联网建设的关键环节。它以LE…

【RocketMQ】【源码】DLedger选主源码分析

RocketMQ 4.5版本之前,可以采用主从架构进行集群部署,但是如果master节点挂掉,不能自动在集群中选举出新的Master节点,需要人工介入,在4.5版本之后提供了DLedger模式,使用Raft算法,如果Master节…

SpringSecurity的认证流程源码深入刨析

环境 SpringBoot版本:2.7.14 流程图 默认的Filter SpringSecurity的默认Filter地址:http://t.csdn.cn/YH838 常见的认证授权技术 1、基于表单的认证(Cookie & Session) 基于表单的认证并不是在 HTTP 协议中定义的&#x…

互联网社交礼仪:我到底该怎么笑才对

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 小黑 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 一切要从不知情的阿福发微笑脸说起。 微笑、呲牙笑、流汗笑,到底哪个才是真正的笑&#xff1…