在链接到可执行文件的Windows上加载插件的最佳方法是什么?

我使用dlopen在Linux上加载* .so插件,并且我想用mingw将插件function移植到windows。 有一个dlfcn-win32库,它在原生的windows DLLfunction周围增加了一个dlopen API,但是这并没有规避Windows本身的局限性,即DLL不能在主可执行文件IIUC内引用符号。

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

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

哪个替代scheme可能更容易? 请注意,我期望用可执行文件编译我所有的“插件”。

-BenRI

看来这样做的标准方法是从可执行文件生成一个导入库。 这对于dlfcn-win32来说工作得非常好,因此可以在几乎不改变源代码的情况下实现可移植性。