2009-09-09 17 views
9

¿es posible que mi instalación de mingw 3.4.5 sea defectuosa? ¿o está provisto en alguna otra biblioteca flotando alrededor?mingw 3.4.5 missing dlfcn.h?

en el caso de que se preguntan, dlfcn.h es donde cosas como dlopen y dlclose se definen, por lo que debería ser bastante estándar

+0

Es curioso, yo estaba teniendo este problema recientemente también. – GManNickG

+0

MinGW no cumple con POSIX, por diseño. Está destinado a ser una cadena de herramientas de Windows nativa. Utilice Cygwin para las herramientas compatibles con POSIX para win32. – doug65536

Respuesta

6

No está en mi instalación de MinGW 3.4.5, por lo que duda que su instalación es defectuosa . Supongo que los mantenedores de MinGW esperan que use las funciones de Win32 que soportan la carga dinámica (LoadLibrary(), GetProcAddress(), etc.).

3

mingw es una implementación de un compilador para Windows (un puerto gcc) que implementa la API win32. Las funciones en dlfcn.h (dlopen/dlsym et al.) Son POSIX, no ventanas, por lo que no existe implementación win32. Puede haber un contenedor en msys o cygwin, pero me temo que las diferencias entre la DLL de Windows y los mecanismos de la biblioteca compartida ELF significa que simplemente tendrá que realizar un puerto a las API de Windows.

0

Sé que esta es una pregunta antigua, pero aún sigue siendo relevante hoy, independientemente de la versión de GCC de MinGW.org que pueda estar en uso.

Aquellos que han observado que MinGW está realmente destinado a ser utilizado con las API Win32 nativas, basadas en LoadLibrary() y GetProcAddress(), en lugar de las API específicas de POSIX declaradas en dlfcn.h, son completamente correctas; por lo tanto, MinGW.org tradicionalmente no ha proporcionado ninguna implementación de las funciones de la API dlfcn.h.

Sin embargo, a partir de mingwrt-3.21, tuve que implementar la funcionalidad MinGW, que es similar al uso POSIX de dlsym() en el espacio de direcciones RTLD_DEFAULT. En consecuencia, a partir de esta versión del tiempo de ejecución de MinGW, pretendo mantener una implementación conforme de las API de POSIX dlfcn.h, como un envoltorio alrededor de las API Win32 nativas de LoadLibrary(), GetProcAddress() y PSAPI.DLL.

+0

Tenga en cuenta que la implementación MinGW de dlfcn ** no ** se deriva de dlfcn-win32, (se menciona en otra respuesta y ahora se encuentra en GitHub). Es una nueva implementación, escrita desde cero, para ofrecer un cumplimiento de la característica POSIX más completo (que MinGW necesitaba); también se distribuye bajo la licencia MIT más permisiva, en lugar de GPL-2. –

0

dlfcn.h: No existe el fichero o directorio

Para resolver este he tenido que añadir al archivo .pro:

DEFINES += _WINDOWS