Estoy intentando vincular el LizardTech GeoExpress DSDK en mi propia aplicación. Uso gcc para que podamos compilar en plataformas. En Linux y Mac esto funciona fácilmente: proporcionan una biblioteca estática (libltidsdk.a
) y encabezados, y todo lo que tenemos que hacer es usarlos.Vinculación a la DLL de MSVC desde MinGW
Compilar para Windows no es tan fácil. Han construido la biblioteca usando Microsoft Visual Studio, y usamos MinGW. He leído las preguntas frecuentes de MinGW y me encuentro con los siguientes problemas. La biblioteca es todo C++, entonces mi primera pregunta: ¿esto es posible?
El solo hecho de enlazar con el dll proporciona los errores de "referencia indefinida" para todas las llamadas de C++ (constructores, desctructores, métodos, etc.).
Sobre la base de la MinGW Wiki: http://www.mingw.org/wiki/MSVC%5Fand%5FMinGW%5FDLLs yo debería ser capaz de utilizar la utilidad reimp
para convertir un .lib en algo utilizable. Probé todos los archivos .lib proporcionados por LizardTech, y todos dan una "biblioteca de importación no válida o corrupta". He probado tanto la versión 0.4 como la 0.3 de la utilidad Reimp.
Usando el segundo método descrito en la wiki, he ejecutado pexport y dlltool sobre la dll para obtener un archivo .a, pero eso produce las mismas referencias indefinidas.
BTW: He leído la discusión a continuación. Dejó cierta ambigüedad en cuanto a si esto es posible, y dada la página MinGW Wiki parece que esto debería ser factible. Si es imposible, eso es todo lo que necesito saber. Si se puede hacer, me gustaría saber cómo puedo lograr que esto suceda.
How to link to VS2008 generated .libs from g++
Gracias!
Gracias, esta es exactamente la confirmación que estaba buscando. Tienen una interfaz c, y estoy buscando usar eso, pero es mucho menos poderosa que lo que está disponible en C++. También los presiono para lanzar MinGW. – IndigoFire
Prefiero las versiones de mingw de, bueno, todo, ya que simplifica la implementación cuando la dependencia c-runtime es msvcrt.dll universalmente disponible, en lugar de los tiempos de ejecución específicos de la versión de estudio msvcr70.dll, msvcr71.dll, msvcr80. dll, msvcr90.dll y ahora msvcr100.dll. –