ffmpeg — Libavcodec & quot; точка входа в процедуру для av_frame_alloc не может быть расположена & quot; ошибка в проекте Visual Studio 2017 C ++

Я пытаюсь использовать libavcodec из библиотеки ffmpeg в C ++ с сообществом Visual Studio 2017. Я загрузил последнюю версию x64 dev и общие сборки из zeranoe (версия 20171217), настроил включающие каталоги и дополнительные библиотеки в Visual Studio для сборки x64, добавил файлы DLL из общего пакета в мою PATH.

Это мой пример тестового кода:

extern "C" {
#include <libavcodec\avcodec.h>
}
int main() {
avcodec_register_all();
AVFrame *pAvFrame = av_frame_alloc();
av_frame_free(&pAvFrame);
return 0;
}

Код компилируется без проблем, но когда я запускаю приложение, я вижу диалоговое окно с сообщением об ошибке «Точка входа процедуры для av_frame_alloc не может быть расположена в DLL» (реальное сообщение не на английском языке, это переведенная версия).

Я попытался установить Linker-> Optimization-> References to / OPT: NOREF, как было рекомендовано в аналогичных вопросах, но это не помогло.

Обходчик зависимостей показывает, что av_frame_alloc экспортируется, «точка входа» не привязана. Немного странно, что av_frame_alloc отображается как в avcodec-58.dll (красным), так и в avutil-56.dll (зеленым). Возможно, причина в том, что приложение пытается получить эту функцию из avcodec вместо avutil, но я не уверен, так как я не проверял исходный код этих библиотек.

Так что вопрос в том, как настроить такой простой C ++ проект на основе FFMPEG в VS2017, где я ошибаюсь?

UPD. 1.

Флаги компоновщика: /OUT:»C:\work\code\TestFfmpeg\x64\Release\TestFfmpeg.exe «/ MANIFEST / NXCOMPAT /PDB:»C:\work\code\TestFfmpeg\x64\Release\TestFfmpeg.pdb» / DYNAMICBASE «c: \ work \ dev \ ffmpeg-20171217-387ee1d-win64-dev \ lib * .lib» «kernel32.lib» «user32.lib» «gdi32.lib» «winspool.lib» «comdlg32.lib» » advapi32.lib «» shell32.lib «» ole32.lib «» oleaut32.lib «» uuid.lib «» odbc32.lib «» odbccp32.lib «/ ОТЛАДКА: FULL / MACHINE: X64 / OPT: NOREF / PGD:» C: \ work \ code \ TestFfmpeg \ x64 \ Release \ TestFfmpeg.pgd «/ MANIFESTUAC:» level = ‘asInvoker’ uiAccess = ‘false’ «/ManifestFile:»x64\Release\TestFfmpeg.exe.intermediate.manifest» / OPT : ICF / ERRORREPORT: PROMPT / NOLOGO / TLBID: 1

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]