尽管包含头,但g ++链接器无法定位函数

时间:2018-01-14 03:19:13

标签: c++ compiler-errors cmake linker

我有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语句在每个文件上。我错过了什么?

1 个答案:

答案 0 :(得分:0)

问题是由于cirArray是一个模板化类而导致的,如果实现在.cpp文件中,显然编译器无法生成相关代码。

因此,解决方案是将类实现移动到标题中。