walnutcy

GetProcAddress UNICODE与多字节编程

0
阅读(2590)

VC.Net在编译成UNICODE时,有许多函数要处理,

例如:  strcpy,strlen等等,
这种情况下,可以用宏来处理,示例如下:
#ifdef _UNICODE
//--------------------------------------------------------------------
#define LtStrCpy  wcscpy
#define LtVsprintf  vswprintf
#define LtSprintf  swprintf
#define LtStrlen  wcslen
//--------------------------------------------------------------------
#else
//--------------------------------------------------------------------
#define LtStrCpy  strcpy
#define LtVsprintf  vsprintf
#define LtSprintf  sprintf
#define LtStrlen  strlen
//--------------------------------------------------------------------
#endif
 
但对于一些API如果MS没处理怎么办呢?
例如:
GetProcAddress函数并没有区分GetProcAddressW/GetProcAddressA这样的区分,而GetProcAddress的第二个参数应该是LPCSTR (const char*),这是因为Win32平台函数在导出的时候函数名是ANSI字符,所以正确的写法是这样:
GetProcAddress(hModComCtl,(LPCSTR)(“DllGetVersion”));第二个参数利用强制转换,以避免在C++严格检查语法时报错.