学习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();
时才会出现错误,之前没有问题。正如您所看到的,代码非常简单,只是遵循通用指南。
答案 0 :(得分:2)
我的问题似乎与CMake有关,非常简单/愚蠢。
对CMakeLists.txt
文件的更改:
set(SOURCE_FILES
Console/console.cpp
Console/console.h
main.cpp)
所以原因是WhozCraig
指出,文件是由代码链接和找到的,但实际上并没有建立。