2016-09-06 3 views
-1

Я использую wxWidgets 3.0.2, а Visual Studio 2015 - это много нового для wxWidgets. В чем причина этих ошибок, некоторые говорят, что это из-за порядка включений, а другие говорят из-за unicodes. Поэтому я жду ясного ответа.ошибка C2664: «HWND не может преобразовать аргумент 2 из« lpctstr »в« lpcwstr »Visual Studio 2015

C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(38): error C2664: 'HWND CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM)': cannot convert argument 2 from 'LPCTSTR' to 'LPCWSTR' 
C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(38): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast` 
C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(69): error C2664: 'HFONT CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR)': cannot convert argument 14 from 'LPCTSTR' to 'LPCWSTR' 
    C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(69): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(95): error C2664: 'HWND CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID)': cannot convert argument 2 from 'LPCTSTR' to 'LPCWSTR' 
    C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(95): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(111): error C2664: 'HMENU LoadMenuW(HINSTANCE,LPCWSTR)': cannot convert argument 2 from 'LPCTSTR' to 'LPCWSTR' 
    C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(111): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(311): error C2664: 'HICON LoadIconW(HINSTANCE,LPCWSTR)': cannot convert argument 2 from 'LPCTSTR' to 'LPCWSTR' 
    C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(311): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(324): error C2664: 'HBITMAP LoadBitmapW(HINSTANCE,LPCWSTR)': cannot convert argument 2 from 'LPCTSTR' to 'LPCWSTR' 
    C:\wxWidgets-3.0.2\include\wx/msw/winundef.h(324): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
+1

Похоже, вы пытаетесь передать указатели на строки ASCII для функций, ожидающих широких указателей строк. – Michael

+0

@Michael: Обычно, почему возникают такие ошибки, когда я googled, это обычная ошибка, но ясный ответ – leox

+0

Если это код написанный вами, исправьте код так, чтобы он использовал соответствующие типы. Если это код, написанный кем-то другим, найдите способ либо настроить библиотеку на использование Unicode, либо настроить ваш проект для компиляции без поддержки Unicode. – Michael

ответ

1

Вы, кажется, компиляции кода с неправильным соединением wxUSE_UNICODE и UNICODE значений символов препроцессора. Было бы лучше, если бы вы показали, что именно вы компилируете (меньший пример, лучше) и параметры компилятора, которые вы используете. В отсутствие этой информации все, что я могу сказать, состоит в том, что если вы просто установите «Набор символов» в «Использовать Юникод» на странице «Общие» диалогового окна параметров проекта в среде IDE и ничего не делаете, все должно скомпилируйте из коробки без проблем.

Конечно, если вы уже отредактировали файл include/wx/msw/setup.h и, например, изменили значение wxUSE_UNICODE там, вам нужно его вернуть. То есть пожалуйста, используйте немодифицированный wxWidgets sources.

+0

Если UNICODE и _UNICODE включены в проекте, то LPCTSTR будет эквивалентен правилу LPCWSTR.? поэтому, если я вызываю LoadStringW() в winuser.h, он ожидает LPCWSTR. Так или иначе, я могу передать LPCTSTR и которые неявно преобразуются в LPCWSTR.? – leox

+0

Также я не внес изменений в setup.h – leox

+0

Да. если 'UNICODE' определен,' wxUSE_UNICODE' явно не определен как 0, и вы по-прежнему получаете ошибки из-за того, что 'LPCTSTR' и' LPCWSTR' являются разными типами, то что-то не определяет UNICODE в вашем коде. Найдите его и избавьтесь от него. На самом деле невозможно сказать больше, потому что вы никогда не показывали код, который вы компилировали! –

 Смежные вопросы

  • Нет связанных вопросов^_^