Я использую VSCode и расширение для запуска кода, чтобы попытаться запустить простой проект c ++ с включаемыми файлами.
Проект состоит из main.cpp:
#include <iostream>
#include <time.h>
#include "cval.hpp"
using namespace std;
int main(void)
{
putHello();
return 0;
}
AЗаголовочный файл 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;
}
Если я определю putHello()
в main.cpp, код скомпилируется. Если я включаю #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)
IЯ понимаю, что это проблема, которую я не компилирую cval.cpp
, поэтому компоновщик не может найти ее и правильно связать. Тем не менее, есть ли способ заставить VSCode автоматически компилировать файлы, которые были включены в заголовки?
Я не хочу указывать это все время или включать файлы .cpp, и этовозможность включить эти файлы без проблем в мои проекты кода на C.