Есть ли эквивалент Linux для файлов ресурсов Windows?

У меня есть библиотека C, которую я создаю как общий объект для Linux и DLL для Windows с MinGW32. API зависит от нескольких файлов данных (статистических моделей), которые я действительно хотел бы включить в SO/DLL, чтобы развертывание было всего лишь одним файлом.

Похоже, я могу добиться этого для Windows с "файлом ресурсов", скомпилированным с помощью windres, но потом мне нужно написать кучу кода обработки ресурсов для Windows, и я все еще придерживаюсь файлов в Linux.

Есть ли способ достичь той же функциональности в Linux?

Еще лучше, есть ли переносимое решение?

Ответ 2

Два возможных решения:

  • Библиотека Phong Vo sfio, которая является частью набора инструментов технической поддержки AT & T, является прекрасной заменой для C stdio.h, и это позволит вам открывать файлы или блоки памяти с помощью одного API. Таким образом, вы можете легко преобразовать ваши существующие файлы в C инициализированные данные для включения в ваш DLL или SO файл.

    Это хорошее кросс-платформенное решение, но наказание заключается в том, что кривая обучения для начала довольно высока. Они не позволяют легко понять, как работает материал, или взять одну часть своего набора инструментов и разделить его на использование независимо от других частей. Но хорошей новостью является то, что если вы хотите использовать свою U/Win систему для запуска Unix-кодов в Windows (все части одного набора инструментов), вы можете создавать библиотеки DLL и SO с помощью одной и той же системы.

  • Для этой проблемы я часто возвращаюсь к Lua; Я могу хранить данные Lua во внешних файлах или внутри C как инициализированные данные. Это отлично подходит для распространения всего в одном файле .so; Я делаю это для своих учеников.

    Опять же, недостатком является то, что вам нужно освоить и включить новую технологию.

В своей работе я использую Lua над материалами AT & T по следующим причинам:

  • Lua имеет гораздо меньший размер и призван хорошо играть с другими; с АСТ вы действительно действительно принимаете свой способ делать вещи.

  • Кривая обучения с Lua намного менее крутая; вы можете быть продуктивным очень быстро.

  • Lua легко устанавливается и легко получить информацию об этом. У AST есть свой собственный причудливый процесс установки, которого никто не видит в мире; часто бывает сложно сделать установку; и сложнее получить информацию об этом.

  • Использование Lua имеет много других выигрышей, поэтому усилия, потраченные на обучение Lua и изучение того, как включить Lua в коды C, легко амортизировать по нескольким проектам.