Pregunta

..., seguimiento a este .

A partir de las respuestas que me han dado a mi pregunta hace referencia He aprendido que:

  • compiladores diferentes utilizan diferentes decoración de nombres, lo que hace imposible el uso de una biblioteca de C ++ dinámico construido con un compilador en un proyecto construido con el compilador B,
  • la biblioteca se puede construir de manera estática me ahorro incluyendo la cabecera n y archivos de origen en el proyecto o símbolos exportadores. (Todavía no salvará a la reconstrucción de la biblioteca para su uso con un compilador diferente.)

Tener una mirada más cercana a SDL a la luz de lo que se ha dicho, me he dado cuenta, que su vinculación tiene dos capas: en mi proyecto SDL, me enlace dinámico con libSDL.a, que, a su vez, enlace de forma dinámica contra SDL.dll, elminating así la necesidad de diferentes versiones .dll para diferentes compiladores.

La pregunta es si esto es realmente el caso y una solución viable al problema, o me estoy perdiendo algo (y qué)?

¿Fue útil?

Solución

Creo que su enfoque es correcto. Me ponerlo de esta manera:

  • Para un DLL para ser utilizable por diferentes compiladores, debe contener sólo funciones de C (que pueden ser compilados utilizando un compilador de C ++ usando extern C)
  • Como es habitual con dlls, una biblioteca de importación estática puede ser utilizado de manera que las funciones de la DLL pueden ser llamados directamente, en lugar de tener que ser cargado por su nombre
  • En lugar de una biblioteca regular de importación, usted podría tener una biblioteca envoltorio que envuelve funciones C de la DLL en C ++ clases y funciones
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top