从zip,内存等加载动态库

问题描述:

有没有办法从zip文件,内存或自定义包文件加载动态库(so或dll);还是我在浪费时间?没有什么我可以在互联网上找到它。 [编辑]澄清:我正在寻找使用LoadLibraryEx(适用于Windows)或dlopen(适用于Linux)的动态库的运行时加载。我可以轻松地从目录加载对象,但我想知道是否有方法将共享/动态库放入ZIP文件并从该文件中加载它。从zip,内存等加载动态库

+0

你的目标是什么?你想解压文件并在相同的程序中使用库?您需要使用-l标志编译程序以使用这些库。 –

+0

我想在运行时加载库,使用“LoadLibraryEx”或“dlopen” – Gasim

是的。请注意,加载库是依赖于平台的(例如,Windows使用LoadLibrary(),dlopen调用)。在窗户上,他们是DLLs,并在* NIX,.SO s。不过,您可以将实际的实现细节抽象为特定于平台的类,这正是许多C++插件体系结构允许程序在运行时动态加载模块的过程。

至于你的问题的第二部分,虽然我不确定内存部分,但.zip文件部分确实只是一个使用Api从zip文件中提取所述库到一个临时位置的情况,然后从那里动态加载库?对于定制包文件也是这样,你只是有一个关注点分离,即:

  • 从定制包文件,zip文件中提取库,无论到临时位置(用户有写权限)
  • 正常加载库(例如LoadLibrary()
  • 自己清理。

没有(AFAIK)平台不可知的,甚至是平台依赖的直接从压缩文件加载的方式,也不应该是因为它有点小生意。在其他地方提取,按照常规进行加载。

+0

谢谢你的想法。 – Gasim