.def 里头设置 DATA,如何在EXE里引用??

wangjkk 2008-11-09 09:26:30
如题:
.def代码


EXPORTS
SetHook
MsgHwnd DATA

SECTIONS
MsgShared Read Write Shared



DLL代码

#pragma data_seg("MsgShared") //共享数据段

HHOOK glhHook=NULL; //钩子句柄。
HWND MsgHwnd = NULL;

//HINSTANCE glhInstance=NULL; //DLL实例句柄

#pragma data_seg()
....省略


exe代码

HWND MsgHWnd;
MsgHWnd =(HWND)::GetProcAddress(hModule, "MsgHwnd");//问题出在这!!俺不知道如何引用GetProcAddress的这个地址!直接引用这个地址是肯定有问题的!!!!!!能通过读取内存方式访问吗?

在exe文件里可以正常访问到SetHook函数

但是用同样的方法访问的放,也只是得到那个MsgHwnd地址...

引用这个地址,总觉得怪怪的!!!

高人指引下下,DLL共享数据段的访问新人刚接触!!犯迷糊中!!!!

也在自我找答案中.....

...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjkk 2008-11-11
  • 打赏
  • 举报
回复
没人回答...
结帖了
wangjkk 2008-11-10
  • 打赏
  • 举报
回复
嘿,嘿,问题是我现在不知道LoadLibrary什么链接上去!!!

楼上的,可否给个例代码!!!
wangjkk 2008-11-10
  • 打赏
  • 举报
回复
在Exe中引用:

#pragma comment(lib,"../Debug/Hook.lib")
#define DllImport _declspec(dllexport)

DllImport BOOL SetHook(BOOL bInstall,HWND HookhWnd);
DllImport HWND MsgHwnd;


DLL中定义

BOOL WINAPI SetHook(BOOL bInstall , HWND hWnd) //安装钩子。

{
......
}


为什么会报错:
错误 3 error LNK2019: 无法解析的外部符号 "int __cdecl SetHook(int,struct HWND__ *)" (?SetHook@@YAHHPAUHWND__@@@Z),该符号在函数 "protected: int __thiscall CMain::SetHook(int,struct HWND__ *)" (?PetSetHook@CMain@@IAEHHPAUHWND__@@@Z) 中被引用.....

汗一个,好像都没高手在线的样子!!!!

问的问题,都是自问自答....
  • 打赏
  • 举报
回复
可以导出变量
然后你的dll链接上去就可以了.
wangjkk 2008-11-09
  • 打赏
  • 举报
回复
没这个道理吧!!
其实找了资料了

http://soft.ccw.com.cn/apply/os/htm2005/20051109_118VC.htm

看看这个..

可以是可以,问题是他这边是直接导入LIB文件再使用

那像我这边如果用LoadLibrary 导入DLL文件.就不知道啥导入变量了

有在尝试, 不过问题得不到解决!导入格式存在转换的问题!
hhyttppd 2008-11-09
  • 打赏
  • 举报
回复
做几个包装访问的函数,直接取值必然是不行。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧