3

我正在使用 dlopen 在 Linux 上加载 *.so 插件,我想使用 mingw 将插件功能移植到 Windows。有一个 dlfcn-win32 库,它围绕本机 Windows DLL 功能添加了一个 dlopen API,但这并没有规避 Windows 的本机限制,即 DLL 不能引用主可执行文件 IIUC 中的符号。

一种替代方法是使用EDLL 库,它通过在加载对象时链接共享对象中的未解析符号来模仿 UNIX 功能。也许我可以实现一个使用 EDLL 库的 dlfcn 包装器?

另一种选择是简单地为可执行文件生成一个导入库,并使用 dlfcn-win32。

这些替代方案中的哪一个可能更容易?请注意,我希望使用可执行文件编译我的所有“插件”。

-奔日

4

1 回答 1

1

似乎这样做的标准方法是从可执行文件生成一个导入库。这与 dlfcn-win32 配合得很好,因此几乎无需更改源代码即可实现可移植性。

于 2013-12-03T23:13:36.723 回答