为什么这两种方法在BCB中获得的MessageBoxA函数地址不一样?
typedef int (WINAPI *PROC1)(HWND, LPCSTR, LPCSTR, UINT);
PROC1 Proc1 = (PROC1)MessageBoxA;
PROC1 Proc2=(PROC1)GetProcAddress(LoadLibrary("user32.dll"), "MessageBoxA");
在VC++中测试Proc1、Proc2两个函数地址上相等的。
但这两种方法在BCB中获得的MessageBoxA函数地址不一样,为什么?
Proc2得到的是MessageBoxA的真正地址,可Proc1 得到的不知道是MessageBoxA什么地址?
但两者都可以正确调用:Proc1(NULL,"测试1","",NULL);Proc2(NULL,"测试2","",NULL);
有没有哪位能帮忙解答?
[解决办法]
在cb中获取动态库函数地址,必须要用GetProcAddress。
第一种是不是VC专用的,支持这种地址获取,cb没有这种
[解决办法]
一个是通过函数表调用,另一个是直接调用。