5. 常见问题解答

5.1. 我正在使用 Windows,并且找不到 dlfcn.h 头文件!这是怎么回事?
5.2. 是否有某种与 dlopen 兼容的 Windows LoadLibrary API 封装器?

5.1. 我正在使用 Windows,并且找不到dlfcn.h头文件!这是怎么回事?

问题是 Windows 没有dlopenAPI,因此没有dlfcn.h头文件。实际上,Windows 也有类似的 API,即LoadLibrary函数,并且这里写的大部分内容也适用于它。请参考 Microsoft Developer Network 网站 获取更多信息。

5.2. 是否有某种dlopen与 dlopen 兼容的 WindowsLoadLibraryAPI 封装器?

我不知道有任何这样的封装器,而且我认为永远不会有一个支持所有dlopendlopen 的选项。

不过,还有其他替代方案:libtltdl(libtool 的一部分),它封装了各种不同的动态加载 API,以及其他dlopenLoadLibrary。另一个是 GLib 的动态模块加载功能。您可以使用其中一个来确保更好的跨平台兼容性。我从未使用过它们中的任何一个,所以我无法告诉您它们有多稳定以及它们是否真的有效。

您还应该阅读 Program Library HOWTO 的第 4 节“动态加载 (DL) 库”,以了解更多独立于平台加载库和创建类的技术。