我面临奇怪的问题。在Unicode模式下的TCHAR被视为typedef字符TCHAR
我正在编译一个使用静态库的MFC应用程序(VS 2008)MyLib.lib.it在调试模式下编译得很好。 但在调试Unicode它显示错误。我在MFC应用程序中使用调试Unicode版本的MyLib.lib。
Main.obj : error LNK2019: unresolved external symbol "void * __cdecl VCI_Open_Device(wchar_t *)" ([email protected]@[email protected]) referenced in function _wmain
VCIHANDLE
VCI_Open_Device ( TCHAR *ptszDevicePath
);
在这里,我在MFC应用程序中注意到,在调试模式TCHAR是typedef的烧焦TCHAR,这是正确的,但在调试Unicode模式TCHAR应的typedef WCHAR TCHAR但这里也显示它的typedef字符TCHAR。 我检查了WebCam.lib项目TCHAR是调试Unicode模式下的typedef WCHAR TCHAR,它正确。
我想这是在MFC应用程序模式的调试Unicode模式下的一些设置问题。 请帮助解决此问题。 的#ifdef UNICODE // r_winnt
#ifndef _TCHAR_DEFINED
typedef WCHAR TCHAR, *PTCHAR;
typedef WCHAR TBYTE , *PTBYTE ;
#define _TCHAR_DEFINED
#endif /* !_TCHAR_DEFINED */
typedef LPWCH LPTCH, PTCH;
typedef LPCWCH LPCTCH, PCTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR PCTSTR, LPCTSTR;
typedef LPUWSTR PUTSTR, LPUTSTR;
typedef LPCUWSTR PCUTSTR, LPCUTSTR;
typedef LPWSTR LP;
typedef PZZWSTR PZZTSTR;
typedef PCZZWSTR PCZZTSTR;
typedef PUZZWSTR PUZZTSTR;
typedef PCUZZWSTR PCUZZTSTR;
typedef PNZWCH PNZTCH;
typedef PCNZWCH PCNZTCH;
typedef PUNZWCH PUNZTCH;
typedef PCUNZWCH PCUNZTCH;
#define __TEXT(quote) L##quote // r_winnt
#else /* UNICODE */ // r_winnt
#ifndef _TCHAR_DEFINED
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE , *PTBYTE ;
#define _TCHAR_DEFINED
#endif /* !_TCHAR_DEFINED */
typedef LPCH LPTCH, PTCH;
typedef LPCCH LPCTCH, PCTCH;
typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR;
typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR;
typedef PZZSTR PZZTSTR, PUZZTSTR;
typedef PCZZSTR PCZZTSTR, PCUZZTSTR;
typedef PNZCH PNZTCH, PUNZTCH;
typedef PCNZCH PCNZTCH, PCUNZTCH;
#define __TEXT(quote) quote // r_winnt
#endif /* UNICODE */
在这里,当我做右键点击TCHAR它不是在UNICODE部分去。
在库导出的函数原型中使用'TCHAR'会造成麻烦。你的库应该明确它是否使用Unicode或ANSI。 –