Я работаю над игрой, и одно из требований к лицензионному соглашению звуковых активов, которые я использую, заключается в том, что они распространяются таким образом, чтобы сделать их недоступными для конечного пользователя. Итак, я собираюсь объединить их в плоский файл, зашифровать их или некоторые из них. Проблема в том, что используемая звуковая библиотека (Hekkus Sound System) принимает только путь к файлу «char *» и обрабатывает внутреннее чтение файла. Поэтому, если я буду продолжать использовать его, мне придется переопределить функции файла stdio для обработки шифрования или того, что я решаю сделать. Это кажется выполнимым, но меня это беспокоит. В Интернете я вижу, как люди сталкиваются с неожиданными неприятными проблемами, которые возникают на платформах, которые меня интересуют (Win32, Android и iOS).Переопределить функции библиотеки библиотеки c?
Существует ли кросс-платформенная библиотека, которая позаботится об этом? Есть ли лучший подход, который вы бы рекомендовали?
Не могли бы вы их декодировать и записать их некодированные в файл/tmp, а затем вызвать открытые и затем отменить их сразу после Открыто? Дескриптор файла внутри Хеккуса останется открытым после открытия. (Редактирование: идея дискового диска ниже кажется лучше) –
Определите «недоступный». Если вы играете звук в пользовательской системе, это звучит довольно доступным для меня. В любом случае, в отношении Hekkus Sound System - авторский веб-сайт говорит, что он предлагает источники тому, кто заинтересован. Таким образом, проще всего получить исходный код и исправить его. Странно, хотя эта звуковая библиотека не абстрагирует способ получения данных. – n0rd
Пожалуйста, не переопределяйте зарезервированный идентификатор в C, он будет вызывать неопределенное поведение. В проекте стандарта C99 говорится (Приложение J, раздел J.2): ** Поведение не определено в следующих случаях: [...] Программа пытается объявить библиотечную функцию самостоятельно, а не через стандартный заголовок , но декларация не имеет внешней связи (7.1.2). Программа объявляет или определяет зарезервированный идентификатор, кроме как разрешено в соответствии с 7.1.4 (7.1.3). ** –