2009-08-23 19 views
53

tengo un proyecto VC++ en Visual Studio 2008.¿Cómo desactivo Unicode en un proyecto de VC++?

Se está definiendo los símbolos para Unicode en la línea de comandos del compilador (/D "_UNICODE" /D "UNICODE"), a pesar de que no tengo este símbolo activada en la sección de preprocesador para el proyecto.

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

Como resultado Estoy compilando contra las versiones Unicode de todas las funciones de la biblioteca Win32, en contraposición a los ANSI. Por ejemplo, en WinBase.h, hay:

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

Dónde está el Unicode está activada en el proyecto de VC++, ¿cómo puedo desactivarlo?

+5

Ahora la verdadera pregunta: ¿Por qué - por amor de Dios - le tener la esperanza de ganar algo de desactivar el soporte de UNICODE? Esta debe ser la primera vez que veo a alguien pidiendo ayuda para ingresar al modo de falla. – IInspectable

+1

Si tiene código heredado para ser compatible? Tenemos un grupo de bibliotecas que usan char/TCHAR intercanerablemente, por ejemplo, desde hace 15 años. –

+0

@IInspectable: el soporte de Unicode no es lo mismo que mover 'char' a' wchar_t', que es la forma de hacer "Unicode" de Window. Dame UTF-8 cualquier día sobre alguna implementación fallida de UTF-16. –

Respuesta

84

¿Has probado: Propiedades del proyecto - General - - Valores predeterminados del proyecto de conjuntos de caracteres?

Véanse las respuestas en esta pregunta por las diferencias entre "juego de caracteres Uso de varios bytes" y "no ajustada" opciones: About the "Character set" option in visual studio 2010

+1

Muchas gracias. Esto me ayudó mucho con un proyecto que encontré y no puedo compilar. – LogoS

6

properities del proyecto -> properities Configuración -> General -> charater establece

19

Burgos tiene la respuesta correcta. Solo para aclarar, el juego de caracteres debe cambiarse a "No establecido".

-13

Ninguna de las soluciones anteriores funcionó para mí. Pero

#include <Windows.h> 

funcionó bien.

3

use #undef UNICODE en la parte superior de su archivo principal.

+1

No existe el "archivo principal" *. Hay unidades de compilación. Desdefinir explícitamente un símbolo del preprocesador en el código fuente perderá los archivos incluidos por medio de una opción de compilador '/ FI'. Además, al redefinir 'UNICODE' sin también definir' _UNICODE' se producirá un desajuste entre la API de Windows y el CRT. Una respuesta bastante inútil, -1. – IInspectable

-2

puede ir a Propiedades del proyecto -> Propiedades de configuración -> General -> Proyecto predeterminado y allí cambiar el "Juego de caracteres" de "Unicode" a "No establecido".

+0

¿Alguna razón por la que te pasas y copias una respuesta de 6 años sin aportar nada de valor? Sin atribuir la fuente de información, por supuesto. – IInspectable

0

Por alguna razón, noté que la configuración para Unicode para "Todas las configuraciones" en realidad no se aplicaba a todas las configuraciones.

foto: Setting Configuragion In IDE

Para confirmar esto, me gustaría abrir la .vcxproj y confirme la correcta señal está en los 4 lugares. En esta foto, estoy usando unicode. Entonces, la cadena que estoy buscando es "Unicode". Para ti, es probable que quieras decir "MultiByte".

foto: Confirming changes in configuration file

Cuestiones relacionadas