是否有可能我的mingw 3.4.5安装有问题?或者是在其他一些库上提供的?mingw 3.4.5缺少dlfcn.h?
在你想知道的情况下,dlfcn.h中就是这样的东西的dlopen和dlclose定义,所以它应该是相当标准
是否有可能我的mingw 3.4.5安装有问题?或者是在其他一些库上提供的?mingw 3.4.5缺少dlfcn.h?
在你想知道的情况下,dlfcn.h中就是这样的东西的dlopen和dlclose定义,所以它应该是相当标准
这不是我的MinGW 3.4.5安装,所以我怀疑你的安装有问题。我猜想MinGW的维护人员希望你使用支持动态加载的Win32函数(LoadLibrary()
,GetProcAddress()
等)。
mingw是实现win32 API的windows(gcc端口)编译器的实现。 dlfcn.h(dlopen/dlsym et。al。)中的函数是POSIX,而不是windows,因此不存在win32实现。 msys或cygwin中可能有一个包装,但我担心windows DLL和ELF共享库机制之间的差异意味着您只需要移植到Windows API。
dlfcn-win32是为各地的Win32 DLL函数
dlfcn的包装我有这个问题,并在Cygwin的切尔窗户安装dlfcn-Win32的r19.tar.bz2后,问题解决了。
https://code.google.com/p/dlfcn-win32/downloads/detail?name=dlfcn-win32-r19.tar.bz2
我希望这种帮助其他人。
我知道这是一个古老的问题,但今天仍然相关,无论MinGW.org中可能正在使用的GCC版本如何。那些观察到MinGW真的是用于基于LoadLibrary()和GetProcAddress()的原生Win32 API而不是在dlfcn.h中声明的POSIX特定API的人是完全正确的;因此,MinGW.org传统上没有提供任何dlfcn.h API函数的实现。
但是,从mingwrt-3.21开始,我需要实现类似于RTLD_DEFAULT地址空间上的dlsym()的POSIX使用的MinGW功能。因此,从此版本的MinGW运行时开始,我打算维护POSIX dlfcn.h API的一致性实现,作为LoadLibrary(),GetProcAddress()和PSAPI.DLL本机Win32 API的封装。
请注意,dlfcn的MinGW实现**不是来源于dlfcn-win32,(在另一个答案中提及,现在可以在GitHub上找到)。这是一个新的实现,从头开始编写,提供更全面的POSIX功能合规性(MinGW需要);它也是在更宽松的MIT许可下分发的,而不是GPL-2。 – 2015-03-10 03:29:55
dlfcn.h中:没有这样的文件或目录
为了解决这个问题,我不得不添加到.pro文件:
DEFINES += _WINDOWS
好笑的是,我是有这个问题最近也。 – GManNickG 2009-09-09 04:13:41
MinGW在设计上不符合POSIX标准。它意味着是一个本地Windows工具链。将Cygwin用于win32的POSIX兼容工具。 – doug65536 2013-02-13 18:57:30