반응형
gcc: 정의되지 않은 참조
이것을 정리하고 싶습니다.
프로그램
#include <libavcodec/avcodec.h>
int main(){
int i = avpicture_get_size(AV_PIX_FMT_RGB24,300,300);
}
실행 중
gcc -I$HOME/ffmpeg/include program.c
에러가 발생하다
/tmp/ccxMLBme.o: In function `main':
program.c:(.text+0x18): undefined reference to `avpicture_get_size'
collect2: ld returned 1 exit status
단, avpicture_get_size는 정의되어 있습니다.왜 이런 일이 생기는 건가요?
단, avpicture_get_size는 정의되어 있습니다.
아니요, 헤더(<libavcodec/avcodec.h>
)가 선언합니다.
정의는 라이브러리 자체에 있습니다.
따라서 링커 옵션을 링크에 추가할 수 있습니다.libavcodec
gcc 호출 시:
-lavcodec
또한 라이브러리는 필요한 파일 뒤에 명령줄에서 지정해야 합니다.
gcc -I$HOME/ffmpeg/include program.c -lavcodec
이렇게는 안 돼:
gcc -lavcodec -I$HOME/ffmpeg/include program.c
Wyzard의 코멘트를 참조하면 완전한 명령어는 다음과 같습니다.
gcc -I$HOME/ffmpeg/include program.c -L$HOME/ffmpeg/lib -lavcodec
링커 표준 위치에 저장되지 않은 라이브러리의 경우 옵션-L
를 사용하여 지정된 라이브러리의 추가 검색 경로를 지정합니다.-l
옵션, 즉libavcodec.x.y.z
이 경우는,
GCC의 링커 옵션에 대한 자세한 내용은 여기를 참조하십시오.
C랑 C++를 섞는 거예요?발생할 수 있는 한 가지 문제는 의 선언이.h
을 신청하다.c
파일 테두리:
#if defined(__cplusplus)
extern "C" { // Make sure we have C-declarations in C++ programs
#endif
또, 다음과 같이 합니다.
#if defined(__cplusplus)
}
#endif
주의: 변경할 수 없거나 변경할 의사가 없는 경우.h
해당 파일에는 다음 파일을 포함시킬 수 있습니다.extern "C"
:
extern "C" {
#include <abc.h>
} //extern
언급URL : https://stackoverflow.com/questions/22426574/gcc-undefined-reference-to
반응형
'programing' 카테고리의 다른 글
기존 vuejs 앱을 nuxt SSR를 사용하도록 변환하는 것이 얼마나 어렵습니까? (0) | 2022.08.12 |
---|---|
vuejs-datepicker는 현재 날짜로 시작하고 스타일 추가 (0) | 2022.08.12 |
Vue에서 (클릭된 이미지를 확대/축소하기 위해) 모달 대화 상자에 이미지 src를 전달하려면 어떻게 해야 합니까? (0) | 2022.08.12 |
컴포넌트에 믹스인이 전달되었는지 어떻게 확인합니까? (0) | 2022.08.12 |
C 또는 C++로 콜스택 인쇄 (0) | 2022.08.12 |