Короче говоря, я хочу поместить свои файлы .h и .cpp в подпапки (include и src соответственно) и сослаться на них в моем файле main.cpp, но я получаю сообщение об ошибке:
main.cpp:(.text+0x47): undefined reference to `Kmer::Kmer()'.
при компиляции с использованием:
g++ -I /path/to/MyFolder/include main.cpp.
Мои файлы структурированы, как показано ниже:
//main.cpp
#include <iostream>
#include "Kmer.h"
using namespace std;
int main() {
Kmer k;
return 0;
};
//Kmer.h
#pragma once
class Kmer{
public:
Kmer();
protected:
private:
};
//Kmer.cpp
#include "Kmer.h"
#include <iostream>
using namespace std;
Kmer::Kmer(){
// code here
cout << "Kmer created" << endl;
}
Я ценю помощь!
Спасибо за ответ! Я сделал это просто для проверки и получил то же сообщение об ошибке. Я также предпочитаю использовать команду -I в g++ вместо использования относительных путей в моем коде, если это возможно.





Вы не компилируете Khmer.cpp. Вам нужно добавить его в строку компиляции g++
g++ -o <YOUR APPLICATION NAME> -I /path/to/MyFolder/include main.cpp src/Khmer.cpp
Спасибо! Небольшое редактирование: добавление src/Kmer.cpp в команду g++ сработало! Нужно ли мне добавлять каждый файл .cpp в эту команду для компиляции, если я использую этот метод? g++ -o <YOUR APPLICATION NAME> -I /path/to/MyFolder/include main.cpp src/Kmer.cpp
@DouglasFur Если у вас много файлов .cpp, вы обычно создаете каждый из них отдельно и связываете объектные файлы вместе в качестве последнего шага. Makefiles или файлы проекта IDE обычно помогают в этом, так что это не становится слишком много работы.
Я могу потратить время на изучение make-файлов, если вы собираетесь создавать большие проекты с большим количеством исходных файлов.
Спасибо! Я обязательно загляну в Makefiles. Я начинаю конвертировать свои библиотеки Python в C++. Есть ли у кого-нибудь из вас предложения относительно лучшей документации/ресурсов C++?
Брух, я возился 30 минут, прежде чем у меня получилось работать с этим решением.
#include "Kmer.h"может быть вы хотите#include "include/Kmer.h"