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++严格检查语法时报错.
文章评论(0条评论)
登录后参与讨论