mingw 3.4.5缺少dlfcn.h?

时间:2009-09-09 00:31:24

标签: mingw

我的mingw 3.4.5安装可能有问题吗?或者这是在其他浮动的图书馆提供的吗?

如果您想知道,dlfcn.h是定义dlopen和dlclose之类的东西,所以它应该是非常标准的

6 个答案:

答案 0 :(得分:10)

dlfcn-win32是围绕win32 dll函数的dlfcn的包装器

答案 1 :(得分:6)

这不在我的MinGW 3.4.5安装中,所以我怀疑你的安装是否有问题。我想MinGW维护者希望你使用支持动态加载的Win32函数(LoadLibrary()GetProcAddress()等)。

答案 2 :(得分:3)

mingw是一个实现win32 API的windows(gcc端口)编译器的实现。 dlfcn.h(dlopen / dlsym等人)中的函数是POSIX,而不是windows,因此不存在win32实现。在msys或cygwin中可能有一个包装器,但我担心windows DLL和ELF共享库机制之间的差异意味着你只需要移植到windows API。

答案 3 :(得分:1)

我遇到了这个问题,在cygwin chell下的windows上安装dlfcn-win32-r19.tar.bz2之后,问题就解决了。

https://code.google.com/p/dlfcn-win32/downloads/detail?name=dlfcn-win32-r19.tar.bz2

我希望这有助于其他人。

答案 4 :(得分:0)

我知道这是一个老问题,但今天仍然有用,无论MinGW.org的GCC版本可能正在使用。

那些观察到MinGW真正打算与基于LoadLibrary()和GetProcAddress()的本机Win32 API一起使用的人,而不是dlfcn.h中声明的POSIX特定API,是完全正确的;因此,MinGW.org传统上没有提供dlfcn.h API函数的任何实现。

但是,从mingwrt-3.21开始,我需要实现MinGW功能,这类似于在RTLD_DEFAULT地址空间上使用dlsym()的POSIX。因此,从此版本的MinGW运行时开始,我打算维护POSIX dlfcn.h API的一致性实现,作为LoadLibrary(),GetProcAddress()和PSAPI.DLL本机Win32 API的包装。

答案 5 :(得分:0)

dlfcn.h:没有这样的文件或目录

要解决此问题,我必须添加到.pro文件中:

DEFINES += _WINDOWS