libavcodec 및 libavformat에 정적으로 링크 된 정적으로 링크 된 실행 파일을 빌드하려고합니다./avcodec_alloc_context에 대한 정의되지 않은 참조가 ffmpeg 링커 순서가 맞습니까?
- 다음과 같이./configure --enable-static --enable-gpl --enable-nonfree --disable-vaapi
--disable-libopus --prefix=myBuild --disable-swresample
링커가 설정됩니다 : 컴파일 할 때
g++ -O2 -static -o myBin myBin-myBin.o someotherlibraries.a
-L/ffmpeg/myBuild/lib -lavformat -lavcodec -lavutil -lrt -lm -lpthread -lz
, 나는 ONLY ONE 오류 메시지>를 얻을 수 정적는 FFmpeg 라이브러리로 구축했다
src/ffmpeg/myProgram.cpp:115: error: undefined reference to 'avcodec_alloc_context'
출력 nm /ffmpeg/myBuild/lib/libavcodec.a | 그렙 avcodec_alloc_context :
U avcodec_alloc_context3
U avcodec_alloc_context3
000003c0 T avcodec_alloc_context3
U avcodec_alloc_context3
나는 통근 "C"와 libavcodec.h을 포함 {} 그리고 내 정적 링커 순서가 올바른지 생각합니다. 이 오류가 발생하는 이유는 무엇입니까? 이 메소드가 사용되지 않으므로 사용 했습니까? 이 문제를 어떻게 해결할 수 있습니까?
해결책 :
망가 어쩌면 이전의 코드 조각에서
avCtx = avcodec_alloc_context()
를 사용하지만, 내가 올바르게 기억
codec = avcodec_find_decoder(CODEC_ID_XYZ);//for completeness but should be the same as before
avCtx = avcodec_alloc_context3(codec)
는'나노 /ffmpeg/myBuild/lib/libavcodec.a의 출력은 무엇입니까 -lavcodec
는 또한 링크 순서가 -lavutil -lavformat해야한다 | grep avcodec_alloc_context'? –
나는 내 게시물 – user2212461
에 출력을 추가했습니다 @PaoloBonzini 그게 뭔가 알려주나요? – user2212461