我面臨奇怪的問題。在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。 –