에 대한 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
는 이것이 선언 된 컴파일 된 파일에 포함됩니다.