2010-04-28 21 views
8

Quiero construir una biblioteca estática (archivo * .LIB) GNU libiconv en Windows para usar con otras bibliotecas en Visual C++. Otras bibliotecas que estoy usando están construidas con la opción "Tiempo de ejecución de DLL MultiThreaded" (/ MD). Entonces, necesito construir libiconv con la misma opción.¿Cómo construir gnu `libiconv` en & para Windows?

El problema es que el libiconv usa el sistema de compilación GNU y quiero compilar con la opción/MD. Se puede ver la estructura de la fuente de libiconv aquí:
http://cvs.savannah.gnu.org/viewvc/libiconv/?root=libiconv

Sr. Zlatkovic mantiene el puerto de las ventanas de GNU libiconv para libxml2

se puede ver aquí:

ftp://xmlsoft.org/libxml2/win32/iconv-1.9.2.win32.zip

no puedo usar su puerto. Necesito compilar a partir de la última versión de libiconv-1.13. Me pregunto cómo este hombre lo ha portado? ¿Puede alguien decirme cómo construir * .lib a partir de esto y compilarlo usando MSVC?

EDIT:

En realidad, necesitan construir pocas bibliotecas más gnu con la misma configuración. Entonces, si obtengo una solución para una biblioteca. Puedo hacer lo mismo para todos los demás.

Respuesta

1

Soy el OP. MSYS es exactamente lo que estaba buscando.

sólo tiene que instalar MinGW & MSYS que contiene cáscara de sh.exe & make.exe con el que puede configurar y generar un Makefile después de que se puede utilizar make.exe para ejecutarlo.

Es tan simple como eso.

1

compilarlos usando MinGW utilizando Msys para el medio ambiente si es necesario. Los archivos .a de MinGW aparentemente tienen, de acuerdo con la lista de correo, el mismo formato que los archivos .lib (simplemente haga un cambio de nombre). Es posible que desee comprobar primero si la biblioteca estática iconv ya está incluida en el sistema de descarga/archivos MinGW.

Editar: está en MSYS (C: \ MSYS \ 1.0 \ lib), junto con:

  • libiconv.a
  • libiconv.dll.a
  • libiconv.la

y adicionalmente

  • libiconv-2.dll (en C: \ MSYS \ 1,0 \ \ bin local)

Editar: ¿Está aquí, el libiconv que necesita? estas versiones parecen tener MSVC makefiles :) http://www.opensource.apple.com/source/libiconv/

+0

pero ¿cómo podría ejecutar './Configure' que es un script de shell? Además, ¿cómo le daría la opción "MultiThreaded DLL" Runtime al compilador g ++ de MinGW. – claws

+0

Es posible que no tenga el mismo problema con MinGW toolchain, que el desarrollador está tratando de evitar. Básicamente, la opción multiproceso para el compilador/enlazador de MSVC permite que el DLL use varios montones en lugar de un solo montón, desde un vistazo rápido, y evita que ocurran problemas. –

+0

Bueno, no puedo usar la cadena de herramientas GNU para todo el proyecto. Porque 1. No estoy tan familiarizado con MinGW 2. Estoy usando MFC y 3. Todas las otras bibliotecas están bien con MSVC y las compilé en MSVC. Solo necesito una forma de compilar las gnu libs para Windows. pregunta importante es ¿cómo se ejecutaría './configure' para crear el archivo MAKE? Tampoco puedo usar el archivo lib precompilado para libiconv porque compilo esto yo mismo. Usaré el mismo método para compilar otras gnu lib requeridas. – claws

3

Un pequeño añadido a su respuesta. Tuve el mismo problema y descubrí que la solución MinGW + MSYS era perfecta.

Aunque, tenía que ir un poco más lejos y generar también el.archivo lib para poder enlazar con el dll resultante.

Esto es lo que encontré:

  • generar un archivo .def de la DLL con dumpbin (una herramienta de Visual Studio).

  • generar el archivo .lib del .def con el programa lib (herramienta de Visual Studio demasiado)

Esto le permite especificar algunas enlazado en su caso. Todo lo detallado aquí (no soy el autor de este método): http://wiki.videolan.org/GenerateLibFromDll

También me di cuenta de que esta pareja lib/DLL puede estar vinculado con las dos bibliotecas MD y TDM.

Espero que pueda ayudar a las personas que encuentren esta publicación, como me ayudó.

-David

Cuestiones relacionadas