我的 mingw 3.4.5 安装有可能有问题吗?或者这是在其他一些浮动的图书馆上提供的?
如果您想知道,dlfcn.h 是定义 dlopen 和 dlclose 之类的东西的地方,所以它应该是非常标准的
我的 mingw 3.4.5 安装有可能有问题吗?或者这是在其他一些浮动的图书馆上提供的?
如果您想知道,dlfcn.h 是定义 dlopen 和 dlclose 之类的东西的地方,所以它应该是非常标准的
dlfcn-win32是 dlfcn 围绕 win32 dll 函数的包装器
它不在我的 MinGW 3.4.5 安装中,所以我怀疑你的安装有问题。我想 MinGW 的维护者希望你使用支持动态加载的 Win32 函数(LoadLibrary()
,GetProcAddress()
等)。
mingw 是实现 win32 API 的 windows 编译器(一个 gcc 端口)的实现。dlfcn.h(dlopen/dlsym 等)中的函数是 POSIX,而不是 windows,因此不存在 win32 实现。msys 或 cygwin 中可能有一个包装器,但我担心 windows DLL 和 ELF 共享库机制之间的差异意味着您只需要移植到 windows API。
我遇到了这个问题,在cygwin shell下的windows上安装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 开始,我需要实现 MinGW 功能,这类似于 POSIX 在 RTLD_DEFAULT 地址空间上使用 dlsym() 。因此,从这个版本的 MinGW 运行时开始,我打算维护一个符合 POSIX dlfcn.h API 的实现,作为 LoadLibrary()、GetProcAddress() 和 PSAPI.DLL 本机 Win32 API 的包装器。
dlfcn.h:没有这样的文件或目录
为了解决这个问题,我必须添加到 .pro 文件中:
DEFINES += _WINDOWS