GetProcAddress UNICODE与多字节编程
0赞
发表于 8/6/2010 11:24:19 AM
阅读(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
//--------------------------------------------------------------------
#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++严格检查语法时报错.