Я пытаюсь создать некоторый код для чтения видео в libavformat. После получения скомпилированных DLL и .lib
файлов here, я иду, чтобы построить мой код, и компоновщик не может найти какой-либо из символов libavformat, хотя я связан в предоставленных файлах .lib
.Ссылка на libavformat в Visual Studio 2010
Осмотр libavformat.lib
с dumpbin -headers
показывает, что он экспортирует нужные функции с помощью префикса подчеркивания. Например, хотя я хочу позвонить avformat_open_input
, файл .lib дает _avformat_open_input
.
Почему это, и почему я не могу связать предварительно скомпилированные DLL?
Является ли ваше приложение платформой x64? Также скопируйте точное сообщение об ошибке здесь. – hege
Я просто строю 32-битное приложение. Ошибки компоновщика являются только вашими традиционными LibavVideoReader.obj: ошибка LNK2019: неразрешенный внешний символ «int __cdecl avformat_open_input (struct AVFormatContext * *, char const *, struct AVInputFormat *, struct AVDictionary * *)" (? Avformat_open_input @@ YAHPAPAUAVFormatContext @ @ PBDPAUAVInputFormat @@ PAPAUAVDictionary @@@ Z) ссылка на функцию ... сообщений –
Вы компилируете свой код как C или как C++? Если последний, вы убедились, что объявления C из этих библиотек завернуты в 'extern 'C"?? – ildjarn