У меня возникла странная проблема.TCHAR в режиме Unicode обрабатывается как typedef char TCHAR
Я компилирую приложение MFC (VS 2008), которое использует статическую библиотеку MyLib.lib.it компилирует в режиме отладки. , но в Debug Unicode отображается ошибка. Я использую Debug Unicode для версии MyLib.lib в приложении MFC.
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 является ЬурейиМ обугливается TCHAR, который является правильным, но в режиме отладки Unicode TCHAR должен быть ЬурейиМ WChar TCHAR, но здесь также он, показывая ЬурейиЙ обугленный TCHAR. Я проверил в проекте WebCam.lib. TCHAR - это typedef WCHAR TCHAR в режиме отладки Unicode, который исправляет.
Я думаю, что это проблема с некоторыми настройками в режиме отладки Unicode в режиме приложения MFC. Пожалуйста, помогите решить эту проблему. #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. –