В своей версии DLL-файла x264 я проверил, что функция open называется «x264_encoder_open_130», а 130 — это конкретный номер сборки x264, который я использую. Я строю с использованием MinGW на Windows и ссылки на него, так что моя программа зависнет, если я попытаюсь использовать более новую DLL .. Есть ли способ обойти это?
Нет не должно быть x264_encoder_open
, Это мера, разработанная для обеспечения того, чтобы двоичный файл более высокого уровня создавался на основе правильной версии DLL-библиотеки зависимостей, или в противном случае они плохо соединяются друг с другом из-за несоответствия имени экспорта.
Обойти это легко — если вы обновляете x264, также перестраивайте свое приложение под обновленную библиотеку.
Или, если вы хотите, чтобы ваше приложение можно было обновлять без перекомпоновки, оберните x264 в тонкую оболочку, которую вы обновите вместе с самой x264, чтобы приложение верхнего уровня связывалось с оболочкой, которая не изменяет внешний интерфейс при обновлении.
Других решений пока нет …