Estoy planeando utilizar bibliotecas en mi programa C++. El desarrollo está ocurriendo en Linux, pero la aplicación está diseñada para compilar tanto en Linux como en Windows. Entiendo que el equivalente directo para bibliotecas compartidas (.so) en Windows es DLL, ¿verdad?Crear bibliotecas de programas en Windows y LINUX [C++]
En Linux usando g ++, puedo crear una biblioteca compartida usando -fPIC
y -shared
banderas. AFAIK, no se requiere otro cambio de código para una biblioteca compartida. Pero las cosas son diferentes en una DLL de Windows. Allí debo especificar las funciones que deben exportarse usando dllexport, ¿verdad?
Mi pregunta es ¿cómo puedo manejar esta situación? Quiero decir dllexport no es válido en Linux y el compilador dará un error. Pero es requerido en Windows. Entonces, ¿cómo escribo una función que se compilará en ambas plataformas sin ningún cambio de código?
Compiladores utiliza
- g ++ - LINUX
- VC++ - Windows
Cualquier ayuda sería grande!
Gracias. ¿Cuál será el tipo de DLL creado en las ventanas? ¿Será eso un dll COM? ¿Hay posibilidades de tener problemas con DLL? –
El uso de dllexport no hace que el dll se exponga al sistema COM. Las posibilidades de un infierno dependen de cómo distribuyas el dll y la aplicación. Si siempre instala los dlls que su aplicación requiere, entonces el problema relacionado con este dll no es un problema. –
@sean e: Gracias. Siempre instalaré la aplicación DLL requerida en el directorio de la aplicación. A veces puede haber pequeñas actualizaciones que simplemente reemplazarán una DLL en lugar de una aplicación completa. será eso un problema? –