2016-03-18 1 views
0

Ceci est la question d'un débutant: Lorsque je créé un projet de cadre wxWidgets, et au point que je dois ajouter #include dans une fonction, j'ai eu une telle erreur du compilateur:C: B question du compilateur avec projet wxWidgets

C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HWND__* CreateDialog(HINSTANCE, LPCTSTR, HWND, DLGPROC)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|39|error: cannot convert 'LPCTSTR {aka const char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'HWND__* CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM)'| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HFONT__* CreateFont(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCTSTR)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|70|error: cannot convert 'LPCTSTR {aka const char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '14' to 'HFONT__* CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR)'| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HWND__* CreateWindow(LPCTSTR, LPCTSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|95|error: cannot convert 'LPCTSTR {aka const char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'HWND__* CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID)'| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HMENU__* LoadMenu(HINSTANCE, LPCTSTR)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|112|error: cannot convert 'LPCTSTR {aka const char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'HMENU__* LoadMenuW(HINSTANCE, LPCWSTR)'| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HWND__* FindText(LPFINDREPLACE)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|127|error: cannot convert 'LPFINDREPLACE {aka FINDREPLACEA*}' to 'LPFINDREPLACEW {aka FINDREPLACEW*}' for argument '1' to 'HWND__* FindTextW(LPFINDREPLACEW)'| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HICON__* LoadIcon(HINSTANCE, LPCTSTR)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|312|error: cannot convert 'LPCTSTR {aka const char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'HICON__* LoadIconW(HINSTANCE, LPCWSTR)'| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h||In function 'HBITMAP__* LoadBitmap(HINSTANCE, LPCTSTR)':| 
C:\wxWidgets-2.9.4\include\wx\msw\winundef.h|325|error: cannot convert 'LPCTSTR {aka const char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'HBITMAP__* LoadBitmapW(HINSTANCE, LPCWSTR)'| 
P:\c++\codeblocks\UDP SOCKET COM\Communication.cpp||In function 'void ConnectUDP()':| 
P:\c++\codeblocks\UDP SOCKET COM\Communication.cpp|7|warning: unused variable 's' [-Wunused-variable]| 
||=== Build finished: 7 errors, 1 warnings (0 minutes, 1 seconds) ===| 

Voici les codes:

#include <winsock2.h> 
#include <wx/msgdlg.h> 
#include <wx/string.h> 

void ConnectUDP(){ 

SOCKET s; 
int result; 

WSADATA wsaData; 
//initialize winsock 
result = WSAStartup(MAKEWORD(2,2), &wsaData); 
if(result != NO_ERROR){ 
    wxMessageBox("WSAStartup failed with error: " + wxString::Format(wxT("%i"),result)); 
} 
} 

Cela se produit uniquement sur c: b, je n'ai pas de problème avec wxDev ou vs2015

+0

Eh bien, le compilateur dit "char n'est pas wchar_t", ce qui ne devrait pas surprendre. Probablement il y a des discordances 'TCHAR', extraire un exemple minimal. –

+0

Y a-t-il un correctif que je peux faire du côté du compilateur? Je veux toujours rester avec c: b. Merci. – Jacob

+0

Tout d'abord, se faire une idée des différentes choses que peut être TCHAR. Deuxièmement, le problème n'est pas avec l'IDE. Ce n'est même pas avec le compilateur! Au contraire, c'est un problème dans le code source et il devrait être trivial à corriger. –

Répondre

2

Vous semblez avoir un décalage entre UNICODE paramètres pour wxWidgets et votre propre code, c'est-à-dire que vous avez juste besoin de définir UNICODE dans vos options de projet. Faites-vous plaisir et arrêtez d'utiliser une version de développement vieille de 4 ans et passez à l'utilisation de 3.1.0 ou d'au moins 3.0 (le dernier en date est 3.0.2 dès maintenant).