我按照here所述延迟加载DLL。 DLL附带.h文件,它具有常量定义和函数声明。这意味着当我尝试做
时MyFunction = pICFUNC(lpfnGetProcessID); // See link above
编译器抱怨“错误:无法在赋值中将'int(*)(int,int,int)'转换为'int(int,int,int)'”因为在.h文件中已经声明了MyFunction :
int __stdcall MyFunction (int, int, int);
我应该:
A)在.h文件中注释掉函数原型并使用
创建自己的函数原型typedef int (__stdcall * pICFUNC)(int, int, int);
pICFUNC MyFunction;
MyFunction = pICFUNC(lpfnGetProcessID);
B)与A)相同但给函数一个不同的名称(MyFunction_local),而不是在.h文件中注释原型。
C)我还没有想过的其他东西。
我想做A),但是那样弄乱第三方.h文件感觉不对。
答案 0 :(得分:1)
一般来说,有两个具有相同名称但含义不同的符号是个坏消息。你的选项B,使用不同的本地指针名称,听起来像是最好的解决方案。
如果你坚持为函数和指针使用相同的名称,你可以将一个或另一个放入命名空间。