Estamos desarrollando una aplicación que tendrá una "arquitectura" de plug-in para permitir a los consumidores de la aplicación proporcionar sus propios algoritmos de propiedad. (Tendremos básicamente un conjunto de analizadores y permitiremos que terceros proporcionen los suyos también)Recomendación para C++ wrapper para enlaces de biblioteca dinámica en proceso multiplataforma (es decir, COM o CORBA ligeros, de alto rendimiento)
El espacio de dominio requiere un rendimiento muy alto, por lo que las uniones fuera de proceso no van a funcionar y preferimos dejarlo las cosas de peso pesado como CORBA y COM solo.
Básicamente estamos buscando un simple envoltorio multiplataforma en torno a: biblioteca de carga
- de una ruta relativa
- proporcionar un mapeo de la DLL en particular/.so a alguna configuración/Nombre
- hacer algo de inicialización y consultar la biblioteca para asegurarse de que proporciona la funcionalidad necesaria
Creo que esto es realmente sólo una envoltura alrededor de LoadLibrary() y las llamadas a métodos exportado. Podemos escribir esto nosotros mismos, pero preferimos usar el código existente ya que tenemos suficiente en nuestro plato.
De nuevo, el rendimiento y el rendimiento son muy importantes.
preguntas similares son:
Cross-platform alternative to COM - éste está cerca, pero nosotros queremos en proceso solamente - no hay necesidad de salir del proceso y nuestras necesidades son un poco "peso más ligero".
C++ Cross Platform Dynamic Libraries; Linux and Windows
Esto es para C++ no administrado - no podemos utilizar .NET
EDITAR - lo que encontramos
Encontramos que Poco funciona muy bien para nuestras necesidades. Como una bonificación This page es un comentario muy apreciado sobre el estado del desarrollo de C++ y la dirección del idioma ...
Era una envoltura cruzada de plataforma simple que necesitábamos que proporciona Poco. Realmente no hay mucho para eso, pero aun así nos ahorra tiempo y pruebas. Sin sobrecarga adicional durante el tiempo de ejecución.
Yo no creo que nadie se ha molestado en hacer esto de forma explícita en el proceso. XPCOM es lo mejor que se te viene a la mente. –
poco parece hacer el truco – Tim
@Tim: Mi comentario está más bien relacionado con la idea de _una "arquitectura" de complemento para permitir a los consumidores de la aplicación proporcionar sus propios algoritmos propietarios. Por lo tanto, mi proyecto apunta a la misma funcionalidad, pero tiene un problema grave: si el código de usuario pasa por un bucle infinito, el hilo, en el que se ejecuta el código usado, bloquea un núcleo de la CPU y, por lo tanto, reduce el rendimiento. De alguna forma, este hilo debe ser detenido. Entonces, ¿tienes el mismo problema? Si es así, ¿cuál es su solución? –