> 백엔드 개발 > C++ > 내 C 프로젝트에서 ''XXX용 vtable'에 대한 정의되지 않은 참조' 또는 'ClassName::ClassName()' 링커 오류가 발생하는 이유는 무엇입니까?

내 C 프로젝트에서 ''XXX용 vtable'에 대한 정의되지 않은 참조' 또는 'ClassName::ClassName()' 링커 오류가 발생하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-03 00:04:14
원래의
391명이 탐색했습니다.

Why Am I Getting

GCC C 링커 오류: 'vtable for XXX', 'ClassName::ClassName()'에 대한 정의되지 않은 참조

C를 링크하는 동안 Eclipse-CDT의 프로젝트에서 "'XXX용 vtable'에 대한 정의되지 않은 참조" 또는 "에 대한 정의되지 않은 참조"와 같은 링커 오류가 사용자에게 발생할 수 있습니다. '클래스이름::클래스이름()'". 이러한 오류는 성공적인 라이브러리 연결을 방해하는 근본적인 문제를 나타냅니다.

1. 정적 라이브러리 유형 확인

정적 라이브러리의 64비트 특성을 확인하려면 터미널에서 다음 명령을 실행하세요.

file /path/to/library.a | grep -i "64-bit"
로그인 후 복사

"64비트"가 있는 경우 출력, 라이브러리는 64비트입니다.

2. 라이브러리 클래스 및 메서드 유효성 검사

라이브러리에 예상되는 클래스와 메서드가 포함되어 있는지 확인하려면 ctags 또는 lldb와 같은 C 헤더 뷰어 도구를 사용하세요. 예를 들어 터미널에서 ctags를 사용하는 경우:

ctags -R /path/to/library_header_files_directory
find /path/to/tags_file_directory NameOfClass
로그인 후 복사

이 명령은 헤더 파일에서 생성된 태그 파일에서 클래스 이름을 검색하고 라이브러리에 존재하는지 여부를 나타냅니다.

3. 오류 이해

이 경우 링커 오류는 "SomeOtherClass" 클래스에서 재정의된 가상 함수에 대한 정의가 누락되었음을 나타냅니다. 선언이 존재하지만 구현이 부족합니다. 이 문제를 해결하려면 "SomeOtherClass"에서 누락된 메서드에 대한 정의를 제공하세요.

위 내용은 내 C 프로젝트에서 ''XXX용 vtable'에 대한 정의되지 않은 참조' 또는 'ClassName::ClassName()' 링커 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿