如何通过PhysFS加载动态库?

时间:2017-09-13 08:42:32

标签: c dll dlopen physfs

这就是我的困境:我正在使用PhysFS,它允许我将多个目录和档案视为一个虚拟目录。这是一个未来的视频游戏,我打算使它更友好。 PhysFS是使其适应模块化的最佳方式。

与此同时,我还打算使用一种类型的脚本扩展器,它可以加载库并在Lua中注册它们。 I already created a crude, makeshift, largerly proof-of-concept Lua script extender

那么我的问题是什么?我的问题是 dlopen / LoadLibrary 仅适用于真实文件系统上的文件。我想通过PhysFS加载。我通过PHYSFS_openRead加载文件,然后使用PHYSFS_read将文件的全部内容加载到内存缓冲区中。

有些人建议将 .so / .dll 文件从PhysFS加载到内存中,然后将其写入Linux中的/ tmp或Windows中的C:\ temp,然后dlopen-它。 但我不认为这是一种非常优雅的方式。

那么......还有其他想法吗?我确实调查了mmap,并认为我可以手动加载ELF文件(在Linux上)并以某种方式手动提取函数,最后将它们注册为Lua,但到目前为止,{{ 3}}

人们说我应该调查all I could produce was a program that gave me information about the elf,但我不确定这对我有什么帮助。

那我该怎么办?如何通过PhysFS将库加载到内存中,并使用替代dlopen 来... dlsym中的函数?

请不要建议dlopen,除非你真的建议我暂时写出文件。

我的问题更大:我如何链接?如何从库中获取已存在的功能?为什么有些人会向我建议LibJIT

0 个答案:

没有答案