VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 524|回复: 6

[求助] exe调用dll进行赋值问题

[复制链接]
42_avatar_middle
在线会员 Chigco.Orc 发表于 2017-12-31 02:49:42 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 Chigco.Orc 于 2017-12-31 16:02 编辑

exe LoadLibraryA dll后,调用dll中的onInit函数
进行赋值后崩溃

其中dll中代码
AAA.h为

class AAA {
private :
        DWORD dw;
};

AAA.cpp为
onInit(){
dw = 0;
}

在执行到dw = 0 就崩溃了。。。。
调试输出中 有这么一段:....的第一机会异常:  0xC0000005:  读取位置 0x0000002C 时发生访问冲突。

win7 x64 vs2013程序为32位


我定位到更细的地方了。
exe启动线程初始化dll。然后把exe界面中的RichEditHWnd GetSafeHwnd()传递给dll进行调用。dll内部onInit一调用便崩溃。





上一篇:求一份URL编码解码源码
下一篇:怎么让界面的字变大点和符号的问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2017-12-31 20:17:30 | 显示全部楼层
onInit 是 类 AAA 的成员函数吗?如果不是的话,dw 从何而来?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

42_avatar_middle
ico_lz  楼主| Chigco.Orc 发表于 2017-12-31 21:51:18 | 显示全部楼层
肯定是的啊

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2017-12-31 23:14:39 | 显示全部楼层

既然是的话,楼主是如何导出 onInit 函数的?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

42_avatar_middle
ico_lz  楼主| Chigco.Orc 发表于 2018-1-1 02:19:51 | 显示全部楼层
#if (defined(_WIN32) || defined(_WIN64))
extern "C" __declspec(dllexport)  void* ExportInterface(const char* pszInterfaceName);
#else
extern "C" void* ExportInterface(const char* pszInterfaceName);
#endif

然后在Cpp中return new AAA();

.
exe LoadLibraryA(dll) ; GetProcAddress("ExportInterface"); 直接 OnInit();

现在是传递一个exe的RichEditHWnd给dll调用dll执行完OnInit直接就崩溃了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

07_avatar_middle
在线会员 freehawkzk 发表于 2018-1-3 15:49:07 | 显示全部楼层
Chigco.Orc 发表于 2018-1-1 02:19
#if (defined(_WIN32) || defined(_WIN64))
extern "C" __declspec(dllexport)  void* ExportInterface(co ...

感觉你这种用法是不是还需要导出那个AAA类啊。
ExportInterface返回的是void*指针,你是怎么转换成AAA*的?
既然没有编译错误的话,我估计是我想错了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

01_avatar_middle
在线会员 libocdf 发表于 2018-1-5 19:49:23 | 显示全部楼层
Chigco.Orc 发表于 2018-1-1 02:19
#if (defined(_WIN32) || defined(_WIN64))
extern "C" __declspec(dllexport)  void* ExportInterface(co ...

工程放上来吧!!!直接给你调试。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-16 21:26

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表