“{classname}

에 대한 vtable에 대한 정의되지 않은 참조를 가져 오는 중입니다. 올바르게 컴파일되지만 링크되지 않는 많은 라이브러리가 있습니다.” 저는 Visual Studio 2015 용 Visual Micro를 사용하고 있습니다. 다음은 전체 오류 메시지 모음입니다.

CommandPattern3.cpp.o:In function `DualMotorRomeo DualMotorRomeo.h:undefined reference to `vtable for DualMotorRomeo DualMotorRomeo.h:undefined reference to `vtable for DualMotorRomeo CommandPattern3.cpp.o:In function `__static_initialization_and_destruction_0 CommandPattern3.ino:undefined reference to `DualMotorRomeo ~DualMotorRomeo() collect2.exe*:error: ld returned 1 exit status Error compiling for board Arduino/Genuino Mega w/ ATmega2560 (Mega 2560) 

나는가는 빗으로 코드를 살펴 봤습니다. 그러나 정의되지 않은 참조를 볼 수 없습니다.

vTable을 검사하고 누락 된 항목을 찾는 데 도움이되는 Windows 10 유틸리티가 있습니까?

코드베이스가 너무 커서 게시 할 수 없지만 모든 코드가 포함 된 ZIP 파일을 제공 할 수 있습니다.

댓글

  • 링커는 귀하를 돕기 위해 열심히 노력하고 있습니다. DualMotorRomeo.h를 확인하고 소멸자가 있는지 확인합니다 (상속에 따라 가상이어야합니까?).

Answer

DualMotorRomeo에 대한 헤더 파일이 없지만 링커에서 소멸자가 선언되었다고 말합니다 (~DualMotorRomeo() )가 클래스 헤더에 있지만 소멸자가 정의되지 않았습니다. “DualMotorRomeo를 작성하지 않은 경우 라이브러리를 업데이트해야합니다.

그때까지는 간단히 소스 파일 중 하나에 다음을 추가합니다.

DualMotorRomeo::~DualMotorRomeo() { } // DualMotorRomeo::~DualMotorRomeo() 

그러면 vtable 링커 오류도 수정됩니다. vtable는 이것이 선언 된 컴파일 된 파일에 포함됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다