2010-01-19 28 views
41

Estoy tratando de usar xlsLib para crear hojas de cálculo de Excel desde una aplicación C++.De la biblioteca estática MinGW (.a) a la biblioteca estática de Visual Studio (.lib)

El problema es que al compilar xlsLib, proporciono un archivo .a (una biblioteca estática de GCC, generada por MinGW). Pero, mi aplicación depende de otra API (PhysX) que solo compila con Visual Studio.

Por lo tanto: ¿es posible transformar la biblioteca estática de GCC (xlslib.a) en un archivo de biblioteca estática de Visual Studio (xlslib.lib)?

Respuesta

-1

Por lo que yo sé, son la misma cosa. Los archivos .lib de Visual Studio también son archivos ar que contienen archivos de objeto. ¿Intentó simplemente cambiar el nombre del archivo? :)

+7

No, no es así de simple, el formato del archivo real es ligeramente diferente. – laura

+0

Creo que también hay una herramienta lib.exe que viene con Visual Studio. Usando un archivo .def puedes convertir .a a .lib. – jiggunjer

32

Los archivos de las bibliotecas estáticas generados con MinGW son generalmente compatibles con el compilador/enlazador de Visual C++. Por lo tanto, usted debe ser capaz de utilizarlas directamente mediante la adición de archivos a .a ligador de entrada en las propiedades del proyecto en Visual Studio:

  1. Ir al proyecto Properties (Alt-F7).
  2. En el cuadro de la izquierda, abierta Configuration Properties->Linker->Input
  3. Agregar lista de todos .a archivos que necesita para utilizar
  4. Es posible que tenga que añadir también libgcc.a la biblioteca de MinGW

Además, puede producirse problemas relacionados mixta C las bibliotecas de tiempo de ejecución properties of C/C++->Code Generation->Runtime Library, pero esto depende de la configuración de compilación que use con MinGW. A veces es necesario vincularse con libmsvcrt.a desde MinGW, pero en muchos casos (si no en la mayoría) causa problemas.

Finalmente, este enlace mixto MinGW y Visual C++ generalmente funciona pero para los módulos C y no funciona para C++, hasta donde yo sé.

+0

pero el uso .a hace que mi .exe no pueda depurar "No se puede encontrar la información de depuración". – onmyway133

+3

@ onmyway133 compruebe si todavía hay símbolos de depuración. Puedes usar, p. 'nm --debug-syms', y si el binario es eliminado, dice" sin símbolos ". –

+1

agregar libgcc.a fue importante para mí – meolic

4

pero el uso de .a hace que mi .exe no pueda depurar "No se puede encontrar la información de depuración". - entropía 22 de mayo a las 12:27

eso es porque la biblioteca .a no incluye la información de depuración necesaria para la depuración. necesita decirle al compilador que agregue información de depuración cuando está compilando si desea depurarlo. para MinGW, es necesario agregar "-g" a CFLAGS cuando se ejecuta "make", así como "make CFLAGS="-g""

Cuestiones relacionadas