Pregunta

Estoy seguro de que este problema se ha resuelto antes y tengo curiosidad por saber cómo se hace. Tengo un código en el que, cuando se ejecuta, deseo escanear el contenido de un directorio y cargar la funcionalidad.

Específicamente, estoy trabajando con un motor de secuencias de comandos al que quiero poder agregar llamadas de función. Quiero que el motor central proporcione una funcionalidad muy limitada. El usuario debería poder agregar funciones adicionales a través de bibliotecas de terceros, que quiero que el motor busque y cargue. ¿Cómo se hace esto?

¿Fue útil?

Solución

Depende de la plataforma. En win32, usted llama a LoadLibrary para cargar una DLL, luego obtiene las funciones con GetProcAddress . En las plataformas Unixy, los equivalentes son dlopen y dlsym .

Otros consejos

Puede usar las funciones POSIX dlopen / dlsym / dlerror / dlclose en Linux / UNIX para abrir bibliotecas compartidas dinámicamente y acceder a los símbolos (incluidas las funciones) que ofrecen, consulte página de manual para más detalles.

Si desea utilizar una biblioteca para esto, le recomendaría GLib (la biblioteca de utilidades que se encuentra debajo del kit de herramientas GTK + UI). Presenta el " GModule " sub-API, que proporciona una forma limpia y portátil de hacerlo. Esto le ahorra tener que envolver las llamadas relevantes usted mismo y también le brinda el resto de GLib, que es muy útil para tener en programas en C de cualquier tamaño.

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