2010-08-26 15 views
9

Estoy trabajando en aprender la API de Windows y estoy usando mingw como mi compilador con Code :: Blocks como mi IDE. Me he encontrado con un problema al usar la función wWinMain. Usé el programa ubicado aquí link text. Se compila bien en VSC++ 2008 express pero cuando se usa mingw aparece el error "referencia no definida a WinMain @ 16". He descubierto cuál es el problema (creo). Al reemplazar el wWinMain con solo Winmain y el puntero de cadena PWSTR con LPSTR, se compila perfectamente. Mi pregunta es, ¿cómo puedo solucionar esto ?, y si no, no estoy usando Unicode tan importante.wWinmain, Unicode y Mingw

Gracias.

Respuesta

12

Utilice la función simple (no unicode) WinMain, y luego obtenga su línea de comando Unicode usando GetCommandLineW. MinGW no sabe acerca de wWinMain.

Probablemente va a encontrar trabajo en MinGW difícil; last time I used it it did not support most of the wchar_t components of the C++ standard library (i.e. std::wifstream, std::wstring, etc) que dificultó la interfaz con los bits de Windows Unicode.

¿Tiene algo en contra de MSVC?

+0

No tengo nada en contra de MSVC, es solo que pensé que no se puede lanzar el software que usted hace con la edición express. Aunque estoy lejos de ese punto, quiero poder legalmente cuando pueda. – contrapsych

+7

@JAKE: no existe ninguna restricción sobre el tipo de software que puede compilar con MSVC Express Editions. La única diferencia entre las ediciones completa y expresa es que las ediciones completas tienen * significativamente * más funciones, como la capacidad de instalar complementos de MSVC (es decir, Visual Assist X). Pero no hay ninguna restricción en el código compilado; no proviene de Visual Studio en ningún caso, sino del SDK de Windows. –

+0

Oh, muestra todo lo que sé, gracias, creo que probablemente empiece a usar VS entonces. – contrapsych

19

Para las versiones antiguas de MinGW, se puede utilizar un envoltorio:

MinGW-Unicode principal:

https://github.com/coderforlife/mingw-unicode-main/

envoltorios simples para agregar wmain y apoyo wWinMain en MinGW

Estas envolturas permiten el uso de wmain/wWinMain en MinGW perfectamente con Unicode (WCHAR), regular (CHAR), o la capacidad de elegir (TCHAR).

Las instrucciones para usarlas están en los archivos. También echa un vistazo a otros programas que los utilizan.


Para las nuevas versiones de MinGW, se debe utilizar la opción -municode, como se dice en el MinGW-Unicode-readme principal:

Nota: Esto ya no debe ser utilizado como MinGW ahora tiene una solución incorporada . Agregue -municode a la línea de comando (y posiblemente extern "C" a la función wmain).

La opción -municode funciona con MinGW-w64. En 2012-07, cuando probé MinGW, no tenía la opción -municode.

Aquí es cómo instalar MinGW-W64:

Objetivo Win32:

Objetivo Win64:


preguntas relacionadas con Unicode:

+3

Puede valer la pena agregar que '-municode' es un *** enlazador * configuración **. –

1

Sé que debería haber comentado en lugar de responder, pero lo hago no tiene suficiente reputación

Quiero agregar que tuve que cambiar los enlaces a los archivos exe en [Configuración> Compilador ...> Ejecutables de la cadena de herramientas> Archivos de programa] para poder ejecutar la versión de la Comunidad.

También mis CodeBlocks de 2016 afirmaron que era Unicode pero la opción -municode no funcionaba, solo funcionaba la actualización de MiniGW a la versión de Community.

Si desea utilizar main en lugar de wmain nuevamente, debe eliminar la opción -municode.