Я хотел поиграть с Opus Some, поэтому я скачал Opus 1.1, но мне кажется, что я не могу связать его с моим проектом Visual Studio 2010 Express. Я попытался добавить путь opus1.1 / include к каталогам properties / vc ++ Directoris / include, но компоновщик по-прежнему жалуется на
некоторые из функций
error LNK2019: unresolved external symbol _opus_decoder_create referenced in function ...
error LNK2019: unresolved external symbol _opus_decoder_destroy referenced in function...
error LNK2019: unresolved external symbol _opus_encoder_destroy referenced in function...
error LNK2019: unresolved external symbol _opus_encoder_ctl referenced in function...
error LNK2019: unresolved external symbol _opus_encode referenced in function...
error LNK2019: unresolved external symbol _opus_decode referenced in function...
Любая помощь будет оценена!
В opus1.1 / win32 есть файл .sln, откройте его в Visual Studio 2010 и скомпилируйте для отладки и выпуска, затем он создаст файлы .lib
Библиотеки C ++ обычно состоят из заголовочные файлы (для компилятора) и файлы библиотеки (для компоновщика). Вы предоставили только заголовочные файлы, но не библиотечные файлы, поэтому компоновщик жалуется. Путь включения предназначен только для заголовочных файлов и не имеет ничего общего с компоновщиком [*].
Библиотека, которую вы скачали, вероятно, содержит файл * .lib. Это файл, необходимый компоновщику. В Visual Studio укажите каталог файла в «Каталоги VC ++> Каталоги библиотек» (желательно в так называемом окне «Property Manager»), а в настройках проекта укажите файл * .lib в «Linker> Input> Дополнительные зависимости «.
Теперь вот трудность: вы должны убедиться, что ваш проект скомпилирован с той же библиотекой времени выполнения, с которой был создан файл * .lib. Например, если файл * .lib был создан с / MD, то вы должны сделать то же самое. Если файл * .lib не предоставлен (для вас) правильным способом, то вы в конечном итоге захотите собрать библиотеку самостоятельно.
[*] На самом деле, в MSVC вы можете использовать автоматическое связывание через заголовочные файлы, метод, используемый некоторыми библиотеками Boost, но давайте пока проигнорируем это.Причина в том, что дистрибутив opusfile для Windows скомпилирован с mingw64 и генерирует библиотеки ссылок .a, а также традиционные файлы .dll. Таким образом, не существует простого способа связать opusfile с Visual Studio.
Это означает, что, как указано, вы можете использовать mingw64 только для связи с дистрибутивом «Windows», который, если вы спросите меня, не оказывает большинству разработчиков на базе Windows никаких преимуществ.
»./configure && make «- это то, как вы создали программное обеспечение в стиле UNIX, и требует большого набора инструментов поддержки обработки текста (automake, autoconf, оболочка типа Bourne и т. д.), а также, как правило, GCC, а не компилятор для платформы Окна.
Правильный ответ — генерировать .lib-файлы, либо самостоятельно портируя весь код в дистрибутиве на Visual Studio (много работы), либо создавая библиотеки ссылок из DLL: http://support.microsoft.com/kb/131313/en-us
Обратите внимание, что, как правило, это не работает — это работает только в том случае, если API библиотеки основан на C (а не на C ++) и если нет несовпадающих распределений (когда вы делаете выделение, а библиотека освобождает, или и наоборот) и если компилятор, сгенерировавший файлы .dll, совместим с ABI с Visual Studio.
Вы также можете сгенерировать связываемые библиотеки, создав библиотеку-заглушку с пустыми реализациями, и использовать .lib из этого, или вы можете использовать динамическую загрузку, используя LoadLibrary () и GetProcAddress ().
Так что, да, разработчики libopusfile не особо помогли подавляющему большинству разработчиков на базе Windows при создании версии библиотеки для Windows.
Кстати, у меня были проблемы с этим очень бесполезным SDK, и я решил их и перепаковал решение для Visual Studio. Это включает в себя дополнительные заголовочные файлы, которые были необходимы, но не включены, а также генерирование библиотеки с возможностью .lib из функций, найденных с помощью dumpbin. Обратите внимание, что это не было тщательно протестировано, но у меня есть работающий инструмент воспроизведения файлов opus, основанный на этом:
http://www.enchantedage.com/opusfile-0.6-for-visual-studio
Это включает в себя заголовки и файл .lib, необходимые для Visual Studio.