dll按照函数序号进行调用的方法

记录: 但是测试成功,不知道是问题出在什么地方?

可以指定序数来调用,许多未公开的Windows API就是这样调用的。
::GetProcAddress(hLib, (char *)1); // 调用hLib第2个函数。


GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。   函数原型:   FARPROC GetProcAddress(   HMODULE hModule, // DLL模块句柄   LPCSTR lpProcName // 函数名   );

hModule   [in] 包含此函数的DLL模块的句柄。LoadLibrary、AfxLoadLibrary 或者GetModuleHandle函数可以返回此句柄。   lpProcName   [in] 包含函数名的以NULL结尾的字符串,或者指定函数的序数值。如果此参数是一个序数值,它必须在一个字的底字节,高字节必须为0。 


http://baike.baidu.com/view/1523523.htm 

http://blog.csdn.net/danhu/article/details/1776202


好像可以吧,只是我直接填入数字,编译出错.



知道微软官方的资料:

按序号而不是按名称从 DLL 导出函数

Visual Studio 2005

从 DLL 导出函数的最简单方法是按名称导出它们。例如,使用 __declspec(dllexport) 时所采用的就是这种方法。但也可以按序号导出函数。使用此技术时,必须使用 .def 文件而不是 __declspec(dllexport)。若要指定函数的序号值,请将其序号追加到 .def 文件中的函数名。有关指定序号的信息,请参见使用 .def 文件从 DLL 导出

Note提示

如果希望优化 DLL 文件的大小,请对每个导出函数使用 NONAME 属性。使用 NONAME 属性时,序号存储在 DLL 的导出表中而非函数名中。如果导出许多函数,这样做可以节省相当多的空间。

您希望做什么?

请参见


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值