2009-08-23 11 views
53

Mam VC++ projektu w Visual Studio 2008.Jak wyłączyć Unicode w projekcie VC++?

jest zdefiniowanie symboli dla Unicode w linii poleceń kompilatora (/D "_UNICODE" /D "UNICODE"), chociaż nie mam to symbol włączona w sekcji preprocesora dla projektu.

alt text http://i26.tinypic.com/14nz693.jpg

W rezultacie jestem opracowującym przeciwko wersji Unicode wszystkich funkcji biblioteki Win32, w przeciwieństwie do tych, ANSI. Na przykład w WinBase.h istnieje:

#ifdef UNICODE 
#define CreateFile CreateFileW 
#else 
#define CreateFile CreateFileA 
#endif // !UNICODE 

Gdzie jest Unicode jest włączony w projekcie VC++, jak mogę to wyłączyć?

+5

teraz za realną pytanie: dlaczego - na litość boską - czy kiedykolwiek nadzieję zdobyć coś od wyłączając obsługę Unicode? To musi być pierwszy raz, kiedy widziałem kogoś, kto prosi o pomoc w przejściu do trybu awaryjnego. – IInspectable

+1

Jeśli masz starszy kod do obsługi? Mamy garść bibliotek, które na przykład używają char/TCHAR między innymi od 15 lat. –

+0

@IInspectable: Obsługa Unicode to nie to samo, co przenoszenie 'char' na' wchar_t', co jest paskudnym sposobem działania "Unicode". Daj mi UTF-8 każdego dnia z powodu jakiejś nieudanej implementacji UTF-16. –

Odpowiedz

84

Czy próbowałeś: Właściwości projektu - Ogólne - Domyślne Project - zestaw znaków?

Patrz odpowiedź na to pytanie o różnice między "Use Multi-Byte Character Set" i "nie została ustawiona" opcje: About the "Character set" option in visual studio 2010

+1

Dziękuję bardzo. Bardzo mi to pomogło przy projekcie, który znalazłem i którego nie mogę skompilować. – LogoS

6

project -> ciwoĹ properities konfiguracyjne -> Ogólne -> charater ustawić

19

Burgos ma właściwą odpowiedź. Aby wyjaśnić, zestaw znaków powinien zostać zmieniony na "Nie ustawiono".

-13

Żadne z powyższych rozwiązań nie sprawdziło się u mnie. Ale

#include <Windows.h> 

działało bez zarzutu.

3

użyj #undef UNICODE u góry głównego pliku.

+1

Nie ma czegoś takiego jak * "plik główny" *. Istnieją jednostki kompilacji. Jawnie niezdefiniowanie symbolu preprocesora w kodzie źródłowym pominie te pliki zawarte za pomocą opcji kompilatora '/ FI'. Dodatkowo, niezdefiniowanie 'UNICODE' bez niezdefiniowania' _UNICODE 'spowoduje dobre dopasowanie między API Windows i CRT. Dość bezużyteczna odpowiedź, -1. – IInspectable

-2

można przejść do właściwości projektu -> właściwości konfiguracji -> Ogólne -> Projekt domyślny i tam zmienić "Zestaw znaków" z "Unicode" na "Nie ustawiono".

+0

Jakiś powód, dla którego zatrzymujesz się i skopiuj sześcioletnią odpowiedź bez wkładania w nią niczego wartościowego? Oczywiście nie przypisując źródła informacji. – IInspectable

0

Z jakiegoś powodu zauważyłem, że ustawienie na Unicode dla "Wszystkie konfiguracje" w rzeczywistości nie miało zastosowania do wszystkich konfiguracji.

zdjęcia: Setting Configuragion In IDE

Aby to potwierdzić, chciałbym otworzyć .vcxproj i potwierdzić prawidłowe żeton jest w 4 miejscach. Na tym zdjęciu używam Unicode. Tak więc szukany ciąg to "Unicode". Dla ciebie prawdopodobnie chcesz powiedzieć "MultiByte".

zdjęcia: Confirming changes in configuration file

Powiązane problemy