我有4个文件world.cpp,world.hpp,Helpers / tools.cpp,Helpers / tools.hpp。
wrold.cpp和tools.cpp包含各自的标题,world.hpp包含tools.hpp
world.hpp / cpp使用在tools.hpp / cpp
中定义的结构在我的CMake文件中添加了
char input[1000];
while (scanf("%s", input) == 1) {
if (strcmp(input, "end") == 0) {
// End the loop
break;
}
printf("%s\n", input);
}
和
target_sources(voxel-world PUBLIC ${PROJECT_SOURCE_DIR}/Helpers/tools.cpp)
因此,对于我的介绍,生成的make文件应该尝试正确链接所有内容。
但是,当我尝试编译程序时,我收到错误消息:
target_sources(voxel-world PUBLIC ${PROJECT_SOURCE_DIR}/World.cpp)
我不确定链接器为什么找不到这些声明,因为include语句在每个文件上。我错过了什么?
答案 0 :(得分:0)
问题是由于cirArray是一个模板化类而导致的,如果实现在.cpp文件中,显然编译器无法生成相关代码。
因此,解决方案是将类实现移动到标题中。