Pregunta

Estoy trabajando en un proyecto 100% de C para el cual se compila el puerto de las ventanas utilizando Visual Studio 2008 Express. Mi proyecto utiliza un par de bibliotecas de Linux que yo era capaz de compilar estáticamente utilizando MingGW.

Me gustaría saber si es seguro para enlazar mi proyecto a aquellas bibliotecas y cuáles eran los posibles problemas que pueden surgir.

Podría compilar las bibliotecas que estoy usando con Visual Studio, pero esto sería un poco de trabajo, ya que se basan en autoconf y no proporciona ninguna archivo de proyecto.

He leído ya este , this , este y esta .

¿Fue útil?

Solución

Es la parte "compilado estáticamente" que me tiene preocupado. Si las bibliotecas fueron compilados en archivos DLL, entonces hay una buena probabilidad de que se va a trabajar, pero a medida que el enlazado estático, el compilador MinGW se han hecho ciertas suposiciones que son verdaderas en cuanto a su biblioteca de ejecución, pero podría o no ser cierto la biblioteca de ejecución MSVC. Dado que usted está pidiendo el código compilado con un compilador para enlazar con RTL de otro compilador, hay un potencial para el caos allí.

Una de las ventajas que tiene es que usted está tratando con C aquí y no en C ++ - con una biblioteca de C ++, no tendría ninguna oportunidad de este trabajo, en C tal vez sí. Yo tendría mucho cuidado para asegurarse de que la alineación de la estructura es la misma en los compiladores y simplemente darle una oportunidad. Si el enlazador se queja de falta símbolos entonces usted tiene su respuesta en cuanto a su grado de compatibilidad de los RTLS realmente son, si conecta bien, así, darle una oportunidad.

Todo eso dicho, he trabajado en un proyecto C ++, que tenía una de las bibliotecas de C compilados con GCC (creo que era Mingw) por razones similares que mencionas. Lo hizo el trabajo, el software funcionó bien y había sido utilizado como esto durante bastante tiempo. El principal problema que tuvimos fue que ciertas construcciones de la biblioteca impediría el ejecutable MSVC de su vinculación con información de depuración; cuidado de ajustar la línea de comandos Mingw fija ese problema.

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