Pregunta

he escrito alguno consola "Hola mundo" -como aplicación. y han seguido c # cywgwin mono mkbundle Windows 7 - no se puede responder fichero de compilación . Pero tengo:

$ mkbundle -o Fur Furries.exe --deps -z
OS is: Windows
Sources: 1 Auto-dependencies: True
  embedding: C:\Monotest\Furries.exe
  compression ratio: 40.43%
  embedding: C:\Soft\Mono\lib\mono\4.0\mscorlib.dll
  compression ratio: 34.68%
Compiling:
as -o temp.o temp.s
gcc -mno-cygwin -g -o Fur -Wall temp.c `pkg-config --cflags --libs mono-2|dos2un
ix` -lz temp.o
temp.c: In function `main':
temp.c:173: warning: implicit declaration of function `g_utf16_to_utf8'
temp.c:173: warning: assignment makes pointer from integer without a cast
temp.c:188: warning: assignment makes pointer from integer without a cast
/tmp/ccQwnxrF.o: In function `main':
/cygdrive/c/Monotest/temp.c:173: undefined reference to `_g_utf16_to_utf8'
/cygdrive/c/Monotest/temp.c:188: undefined reference to `_g_utf16_to_utf8'
collect2: ld returned 1 exit status
[Fail]

Es en Windows XP.

¿Fue útil?

Solución

En primer lugar, preparar el entorno de desarrollo:

  1. Instalar Mono. Por ejemplo, se ha instalado en "C:\Soft\Mono".
  2. Instalar Cygwin. Al seleccionar los paquetes a instalar seleccione siguiente:. Gcc-MinGW, MinGW-zlib, pkg-config, nano
  3. Inicio Cygwin Bash shell (ya sea mediante un enlace o un comando "bash --login -i").
  4. Open "$HOME/.bashrc" con "nano" ( "nano ~/.bashrc"). No utilice los editores que no preservar al final de la línea-s ( "CR", "LF", "CR / LF" o de otro tipo), o se dañará el archivo!
  5. Agregar siguientes líneas al final del archivo:

    export PKG_CONFIG_PATH=/cygdrive/c/Soft/Mono/lib/pkgconfig
    export PATH=$PATH:/cygdrive/c/Soft/Mono/bin
    
  6. Reiniciar Cygwin Bash shell.

Después de que usted puede compilar sus montajes con "mkbundle":

  1. Realice el siguiente comando: "mkbundle -c -o host.c -oo bundle.o --deps YourAssembly.exe <additional arguments>". También puede pasar opcionalmente "-z" para haz resultante compresa. Usted debe obtener archivos "bundle.o" "host.c" y.
  2. "host.c" se debería eliminar "_WIN32" "rama" (excepto "uno #include <windows.h>"). No trabaja. Usted puede hacerlo simplemente añadiendo "#undef _WIN32" derecho después de seguir líneas en él:

    #ifdef _WIN32
    #include <windows.h>
    #endif
    

    Así se logra:

    #ifdef _WIN32
    #include <windows.h>
    #endif
    #undef _WIN32
    
  3. Realizar el siguiente comando: "gcc -mno-cygwin -o ResultantBundle.exe -Wall host.c `pkg-config --cflags --libs mono-2|dos2unix` bundle.o <additional arguments>". Si ha añadido un argumento adicional -Z en el paso 2, se debe agregar un argumento adicional -lz en este paso.

  4. Usted conseguirá "ResultantBundle.exe". Esta es su solicitud Mono lleno como ejecutable independiente.
  5. Se requiere todavía "mono-2.0.dll" y algunos DLL-s y los recursos que dependías durante el desarrollo adicional (por ejemplo, puede requerir GTK # DLL-s nativo), pero que no requiere tiempo de ejecución total de Mono plazo.

Otros consejos

Sólo quería añadir que si pasa a -z mkbundle, entonces tendrá que pasar a -lz gcc. Tuve algunos problemas para conseguir una aplicación con Windows Forms y acceso a la red para que funcione correctamente, y tuve que copiar machine.config de C: \ Mono \ etc \ mono \ 4.0 \ machine.config a donde estaba mi solicitud. luego pasé --machine-config machine.config a mkbundle.

Todos estos pasos son bastante confuso y frustrante, ¿por qué no es tan simple como teclear mkbundle --deps app.exe? He intentado hacer un cambio en la plantilla utilizada por mkbundle y compilar yo mismo, pero no funcionarán. He ido tan lejos como ahora para descargar la fuente mono y tratar de construir todo el asunto, pero no creo que va a funcionar. Si alguien puede explicar por qué demonios está pasando con mkbundle para hacer esto tan molesto, que estaría interesado en contribuir.

después de tener el temp.o y temp.c, puede añadirlos a Visual C ++ para hacer una aplicación de Windows con otras fuentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top