C ++头文件"未找到符号"类的错误

时间:2015-01-04 13:02:33

标签: c++ compiler-errors header-files

学习C ++,我看了很多,每当我看到一个不起作用的不同答案时,也许我只是错过了一些东西。

我收到以下错误:

"/Applications/CLion EAP.app/Contents/bin/cmake/bin/cmake" --build /Users/*/Library/Caches/clion10/cmake/generated/d7f7e267/d7f7e267/Debug --target hench_modules -- -j 8
Scanning dependencies of target hench_modules
[100%] Building CXX object CMakeFiles/hench_modules.dir/main.cpp.o
Linking CXX executable hench_modules
Undefined symbols for architecture x86_64:
"Console::log(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [hench_modules] Error 1
make[2]: *** [CMakeFiles/hench_modules.dir/all] Error 2
make[1]: *** [CMakeFiles/hench_modules.dir/rule] Error 2
make: *** [hench_modules] Error 2

我正在使用JetBrains IDE“CLion”

以下是我的代码:

main.cpp中:

//in main.cpp
#include "Console/console.h"

int main() {
    Console a; // no longer produces an error, because MyClass is defined
    a.log("Hello World!");
}

console.h:

#include <string>
class Console {
    public:
        void log(std::string str);
};

console.cpp:

#include "console.h"
#include <iostream>
using namespace std;

void Console::log(string str){
    cout << str << endl;
};

感谢任何帮助,只有在实际调用a.log();时才会出现错误,之前没有问题。正如您所看到的,代码非常简单,只是遵循通用指南。

1 个答案:

答案 0 :(得分:2)

我的问题似乎与CMake有关,非常简单/愚蠢。

CMakeLists.txt文件的更改:

set(SOURCE_FILES
    Console/console.cpp
    Console/console.h
    main.cpp)

所以原因是WhozCraig指出,文件是由代码链接和找到的,但实际上并没有建立。