Pregunta

Quiero escribir una biblioteca que se vinculará dinámicamente desde otros programas que se ejecutan en sistemas operativos modernos como Windows, Linux y OS / X (es decir, se implementará como un .dll o .so module).

¿Cuál es el idioma más apropiado en ese caso? ¿Debo seguir con C simple? ¿O C ++ también está bien?

¿Fue útil?

Solución

Puede usar C o C ++ para la implementación, pero recomendaría definir la interfaz en puro C. Será mucho más fácil de integrar.

Otros consejos

La dificultad de crear una biblioteca C ++ distribuida en forma binaria es que sus clientes, los usuarios de la biblioteca, generalmente están obligados a usar el mismo compilador C ++ con el que creó la biblioteca. Esto puede ser problemático si desea mantenerse al día y no lo hacen, o si quieren mantenerse al día y usted no. Si tratas en la fuente, esto no es un problema, siempre y cuando tu C ++ sea lo suficientemente portátil como para permitir que sea utilizado por todos los compiladores que usan tus clientes.

Si el código se puede usar desde C, probablemente codifique para una interfaz C. Alternativa, proporcione dos interfaces: la interfaz nativa de C ++ y una interfaz de C. Pero eso es más trabajo que solo una interfaz C. Por otro lado, puede haber beneficios de una interfaz C ++ (tal vez usando iteradores STL, etc.) y eso podría influir en su decisión.

También diría que C es el mínimo común denominador. Siempre tiene la opción de escribir un contenedor de C ++ en la biblioteca principal si se integra mejor con la aplicación de llamada.

Yo diría que C es el más predecible portátil, pero C ++ es factible.

Considere el factor de mínimo común denominador y haga que los consumidores de sus bibliotecas tomen las mejores decisiones para ellos. La construcción de c externa probablemente todavía confunde a algunas personas y desea que su biblioteca viaje lejos y llegue a la audiencia más amplia. Definitivamente hacer las interfaces puras c. C ++ está bien siempre que evite algunas de las esquinas más oscuras (como STL). C es la barra más portátil. Crear bibliotecas para todas las plataformas disponibles no es tarea fácil, así que asegúrese de echar un vistazo aquí para algunos consejos. También es posible que desee considerar el uso de autoconf y similares.

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