Как загрузить динамически библиотеку через PhysFS?

Вот мое затруднение: я использую PhysFS, которая позволяет мне рассматривать несколько каталогов и архивов как один виртуальный каталог. Это для видеоигры в будущем, которую я намерен сделать моддер-дружественной. PhysFS - лучший способ сделать его удобным для моддинга.

В то же время я также собираюсь использовать скрипт-расширитель, который загружает библиотеки и регистрирует их в Lua. Я уже создал грубый, импровизированный, расширенный Lua скрипт-расширитель концепции.

Так в чем моя проблема? Моя проблема в том, что dlopen / LoadLibrary работает только с файлами в реальной файловой системе. И я хочу загрузить через PhysFS. Я загружаю файл через PHYSFS_openRead, затем использую PHYSFS_read для загрузки полного содержимого файла в буфер памяти.

Некоторые люди предлагали загрузить файл .so / .dll в память из PhysFS, а затем записать его в /tmp в Linux или C:\temp в Windows, а затем скопировать его. Но я не думаю, что это очень элегантный способ сделать это.

Итак... есть еще идеи? Я заглянул в mmap и подумал, что, возможно, мне удастся вручную загрузить файл ELF (в Linux) и каким-то образом вручную извлечь функции и, наконец, зарегистрировать их для Lua, но пока все, что я мог создать, - это программа, которая давала мне информацию о эльф

Люди говорили, что я должен изучить LibJIT, но я не совсем уверен, как это мне поможет.

И что же мне делать? Как загрузить библиотеку в память через PhysFS и использовать альтернативу dlopen для... dlsym функций из нее?

Пожалуйста, не предлагайте dlopen, если вы действительно не предлагаете мне временно выписать файл.

У меня вопрос крупнее: как мне связать? Как я могу получить функции из библиотеки, которая у меня уже есть в памяти? И почему некоторые люди предлагают мне LibJIT?

0 ответов

Другие вопросы по тегам