在没有头文件的前提下,怎么调用DLL

guoln1010 2011-06-12 10:38:43
我现在做一个二次开发,可是买来的板卡只给了DLL文件,其他的什么都没有;通过dumpbin查看此DLL文件导出的函数,可是具体怎么调用这些函数呢?我查到的资料是:
1.LoadLibray、GetProcAddress。freelibray.
还有其他方法吗?这个方法怎么调用?没有头文件
...全文
797 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
verybigbug 2011-06-13
  • 打赏
  • 举报
回复
这个,让供应商提供Document啊,这个是很基本的要求啊。除非你的DLL来路不正。
xiaoshiquan 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guoln1010 的回复:]
引用 2 楼 magicfuzzx 的回复:
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数

还有一个问题就是:我需要调用很多歌DLL中函数,我的调用方法就是typedef 定义一个指针函数,然后GetProcAddress导出函数地址,难道每一个函数都需要这样使用吗?有没有简便方法?
[/Quote]
GetProcAddress是动态调用的方式,只能这样的。如果你想静态调用动态库,那你就用lib工具从Dll中导出个.lib文件,然后再自己手动写个头文件你就可以静态使用动态库了。只不过我觉得这样更麻烦
guoln1010 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 magicfuzzx 的回复:]
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数
[/Quote]
还有一个问题就是:我需要调用很多歌DLL中函数,我的调用方法就是typedef 定义一个指针函数,然后GetProcAddress导出函数地址,难道每一个函数都需要这样使用吗?有没有简便方法?
guoln1010 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xianglitian 的回复:]
引用 4 楼 guoln1010 的回复:

引用 2 楼 magicfuzzx 的回复:
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数

恩 是有一个文档文件,里边是函数的说明,可是我动态加载DLL后,使用depends怎么没有显示已经调用的dll?难道哪一步骤有错误?

看看这个
http:……
[/Quote]
呵呵,太感谢了
向立天 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 guoln1010 的回复:]

引用 2 楼 magicfuzzx 的回复:
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数

恩 是有一个文档文件,里边是函数的说明,可是我动态加载DLL后,使用depends怎么没有显示已经调用的dll?难道哪一步骤有错误?
[/Quote]
看看这个
http://blog.vckbase.com/lishengg_blog/archive/2004/10/27/1102.html
注意第四条
guoln1010 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 magicfuzzx 的回复:]
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数
[/Quote]
恩 是有一个文档文件,里边是函数的说明,可是我动态加载DLL后,使用depends怎么没有显示已经调用的dll?难道哪一步骤有错误?
guoln1010 2011-06-13
  • 打赏
  • 举报
回复
改了一下就行了
typedef HANDLE ( __stdcall *pFUNCTION )(LPDWORD);
guoln1010 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xianglitian 的回复:]
引用 4 楼 guoln1010 的回复:

引用 2 楼 magicfuzzx 的回复:
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数

恩 是有一个文档文件,里边是函数的说明,可是我动态加载DLL后,使用depends怎么没有显示已经调用的dll?难道哪一步骤有错误?

看看这个
http:……
[/Quote]
还有个问题,那就是已经能够熟练地调用硬件带的函数了,可是总是在调用handle返回值的函数时编译没问题,运行总是出现错误,这些函数都有一个设备参数

File: i386\chkesp.c
Line:42

The value of ESP was not properly saved across a function call.This is
usually a result of calling a function declared with one calling convention
with a function pointer declared with a different calling convention。

guoln1010 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 verybigbug 的回复:]
这个,让供应商提供Document啊,这个是很基本的要求啊。除非你的DLL来路不正。
[/Quote]
还有个问题,那就是已经能够熟练地调用硬件带的函数了,可是总是在调用handle返回值的函数时编译没问题,运行总是出现错误,这些函数都有一个设备参数
csx007700 2011-06-12
  • 打赏
  • 举报
回复
GetProcAddress 动态调用
找不到函数名的话用LordPE看看导出表
MagicFuzzX 2011-06-12
  • 打赏
  • 举报
回复
即使是GetProcAddress也需要函数的参数表,则需要用逆向的手段取得。

你买的至少也应该有个帮助文档之类的,查看下参数
aorons 2011-06-12
  • 打赏
  • 举报
回复
用GetProcAddress得到DLL函数地址,转换后调用。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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