线索隐藏在链接器输出中:
Undefined symbols for architecture x86_64:
"Player::Player(std::__1::basic_string_view<char, std::__1::char_traits<char> >)", referenced from:
_main in dummy-main.cpp.o
"vtable for BaseEntity", referenced from:
Player::~Player() in dummy-main.cpp.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for Player", referenced from:
Player::~Player() in dummy-main.cpp.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
这会立即提醒我您忘记链接包含这些函数定义的编译单元。
Player
定义于
player.hpp
和
player.cpp
并且它们在子目录中
src
那么我的建议是更新
add_executable
呼吁:
add_executable(TestProject "${PROJECT_SOURCE_DIR}/main/dummy-main.cpp" src/player.hpp src/player.cpp)
请注意,“当前源或二进制目录”在这里是假定的,不需要详细说明。
还要注意,我已经将头文件作为目标文件的一部分包含在内。这样做有很多好处:
-
为visual studio、xcode等生成项目文件时,这些文件将显示在项目树中。
-
使用最新版本时
INSTALL