打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
根据序号 调用dll函数
文件dllTest.def内容如下
LIBRARY      "dllTest"
DESCRIPTION  'TEST Windows Dynamic Link Library'

EXPORTS
    ; Explicit exports can go here
vDllTest @1

根据序号调用vDllTest
GetProcAddress(hDLL,  (char *)(1)); 

FARPROC GetProcAddress(
  HMODULE hModule,
  LPCSTR lpProcName
);



第二个参数LPCSTR lpProcName有什么要求没有?
------Solutions------
库的名字;
http://msdn.microsoft.com/zh-cn/library/64tkc9y5(VS.80).aspx
VS下面用UNICODE;比如:
_T("TESTDLL")
------Solutions------
  查一下MSDN
------Solutions------
如果要获取的函数是以名字导出的,lpProcName就是函数名,
ANSI字符串,不需要Unicode。
比如:
PVOID p = (PVOID)GetProcAddress(hDll,"LoadLibraryW");

如果是以序号导出的,lpProcName为一个WORD值,低位为函数序号,高位为0.
------Solutions------
对应目标动态链接库导出符号的名字,
如果是序号的话,范围要在1到最高导出函数序号值之间。
------Solutions------
没什么要求,以防万一,你加个 _T()宏得了
------Solutions------
楼上几位不要误导,GetProcAddress第二个参数只有ASCII形式的,就是DLL导出的函数名称。
------Solutions------
   引用3楼的说法:PVOID p = (PVOID)GetProcAddress(hDll,"LoadLibraryW"); 就是这样用的.
------Solutions------
引用 6 楼 Mackz 的回复:
楼上几位不要误导,GetProcAddress第二个参数只有ASCII形式的,就是DLL导出的函数名称。


也就是说是在Dll里面定义的函数的名称吗?
------Solutions------
只需要ANSI的字符串,从函数参数为LPCSTR也可以看出。
------Solutions------
引用 8 楼 cqviolet 的回复:
引用 6 楼 Mackz 的回复:
楼上几位不要误导,GetProcAddress第二个参数只有ASCII形式的,就是DLL导出的函数名称。 
 

也就是说是在Dll里面定义的函数的名称吗?
明确导出的,用def文件或者__declspec( dllexport )导出的符号。
------Solutions------
引用 6 楼 Mackz 的回复:
楼上几位不要误导,GetProcAddress第二个参数只有ASCII形式的,就是DLL导出的函数名称。

正解!顶这个。
------Solutions------
谢谢Mackz和DavidHsing
------Solutions------
引用 3 楼 jingzhongrong 的回复:
如果要获取的函数是以名字导出的,lpProcName就是函数名, 
ANSI字符串,不需要Unicode。 
比如: 
PVOID p = (PVOID)GetProcAddress(hDll,"LoadLibraryW"); 

如果是以序号导出的,lpProcName为一个WORD值,低位为函数序号,高位为0.

------Solutions------
貌似都能用
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C++与Fortran混合语言编程中动态连接库的调用
如何编写DLL文件(开发环境VS2005)
如何正确创建DLL和使用DLL
VC2008如何生成及使用DLL(完整版)
将 动态链接库文件添加到VC程序中
C#动态调用非托管DLL
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服