我正在使用VSCode和Code Runner扩展来尝试运行一个带有包含文件的简单c++项目。
该项目由main.cpp文件组成:
#include <iostream>
#include <time.h>
#include "cval.hpp"
using namespace std;
int main(void)
{
putHello();
return 0;
}
一个 hello.hpp 的头文件:
#ifndef CVAL_H
#define CVAL_H
void putHello(void);
#endif
这是 hello.cpp 文件:
#include <iostream>
using namespace std;
void putHello(void){
cout<<"Hello"<<endl;
}
如果我在main.cpp中定义putHello()函数,代码将会编译通过。如果我包含#include cval.cpp,则代码也将编译通过。
然而,当我只包含cval.hpp头文件并使用Code runner扩展时,我会收到以下错误信息:
Undefined symbols for architecture x86_64:
"putHello()", referenced from:
_main in main-a07db2.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我了解这个问题是因为我没有编译 cval.cpp
导致链接器无法找到并正确链接它。然而,有没有一种方法可以让VSCode自动编译在头文件中包含的文件呢?
我不想一直指定它或者不得不将 .cpp 文件包含进来,在我的C代码项目中,这些文件都能够被成功包含。