C:B wxwidgets 项目的编译器问题

C:B compiler issue with wxwidgets project

这是新手的问题: 当我创建一个 wxWidgets 框架项目时,在我需要在函数中添加#include 时,我有这样的编译错误:

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) ===|

代码如下:

#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));
}
}

这只发生在 c:b,我对 wxdev 或 vs2015 没有问题

您似乎在 wxWidgets 的 UNICODE 设置与您自己的代码之间存在不匹配,即您只需要在项目选项中定义 UNICODE

也帮自己一个忙,停止使用 4 年前的开发版本,转而使用 3.1.0 或至少 3.0(目前最新的是 3.0.2)。