我正在延迟加载 DLL,如此处所述。该 DLL 附带一个 .h 文件,其中包含常量定义和函数声明。这意味着当我尝试做
MyFunction = pICFUNC(lpfnGetProcessID); // See link above
编译器抱怨“错误:无法在赋值中将 'int (*)(int, int, int)' 转换为 'int(int, int, int)'”,因为 MyFunction 已经在 .h 文件中这样声明:
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 文件感觉不对。