C++简单项目中未定义的引用

Sop*_*ner 0 c++ compiler-errors undefined-reference

我正在努力编译不是我的项目.我收到此错误:

[sophie@laptop minit]$ g++ -o minit minit.cpp
/tmp/ccxr5oWl.o: In function `main':
minit.cpp:(.text+0x4e6): undefined reference to `minit::MinitAlgo::MinitAlgo(std::string)'
minit.cpp:(.text+0x66c): undefined reference to `minit::MinitAlgo::~MinitAlgo()'
minit.cpp:(.text+0x6af): undefined reference to `minit::MinitAlgo::~MinitAlgo()'
minit.cpp:(.text+0x6df): undefined reference to `minit::MinitAlgo::~MinitAlgo()'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

主程序如下(我将代码减少到最小可能的情况):

#include <iostream>
#include <sstream>
#include <string>
#include "MinitAlgo.h"

int main(int argc, char * argv[]) {
    std::string fileName = "/home/table.dat";
    minit::MinitAlgo m(fileName);
}
Run Code Online (Sandbox Code Playgroud)

MinitAlgo.h 文件:

#ifndef MINITALGO
#define MINITALGO

#include <string>
#include <vector>

namespace minit {

    class MinitAlgo {
        public:
           MinitAlgo(std::string filename);
           ~MinitAlgo();
        private:
           // settings
           bool showDataset;
           bool showRankItems;
           int logTime;
           int debugLevel;
           int countOnly;
    };

}
#endif
Run Code Online (Sandbox Code Playgroud)

MinitAlgo.cpp 文件:

#include "MinitAlgo.h"
#include <string>
#include <sstream>
#include <iterator>
using namespace minit;

MinitAlgo::MinitAlgo(std::string filename) {
   this->showDataset = false;
   this->showRankItems = false;
   this->logTime = 0;
   this->debugLevel = 0;
   this->countOnly = false;
}

MinitAlgo::~MinitAlgo() {
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 6

您还需要编译"MinitAlgo.cpp":

g++ -Wall -o minit minit.cpp MinitAlgo.cpp
Run Code Online (Sandbox Code Playgroud)

[同时添加-Wall,为"所有"事情发出警告,这通常是一件好事,因为几乎所有警告(除了-Wextra在某些情况下添加的警告)通常都是真正的错误]