为什么链接器看不到我的(明确定义的)外部?

时间:2013-09-18 15:13:13

标签: c++ linker-errors unresolved-external

我有一个带有标题和.cpp文件的类。我在标题中声明了我的函数,并在.cpp文件中定义它们,就像你一样。

部首:

#pragma once

// my #includes 

class CDNAGenerator
{
private:
    // stuff 
public:
    CDNAGenerator(int, int);
    ~CDNAGenerator();

    void FilterMeasurementsForOutliers(std::vector<double>& measurement_values);

    // plenty more things

};

CPP:

CDNAGenerator::CDNAGenerator( int genes, int chromosomes )
{
    // constructor code
}

void CDNAGenerator::FilterMeasurementsForOutliers(std::vector<double>& measurement_values)
{
    // function code
}

然后,从同一解决方案中的一个单独项目中,我引用.h文件(但不是.cpp - 这似乎会导致多个定义错误):

#include "..\CalibrationTool\DNAGenerator.h"

并调用这些函数:

CDNAGenerator* dnaGenerator = new CDNAGenerator(30, 0);
dnaGenerator->FilterMeasurementsForOutliers(values);

但我得到CDNAGenerator :: CDNAGenerator(int,int)和CDNAGenerator :: FilterMeasurementsForOutliers(类std :: vector&gt;&amp;)

的未解决的外部错误

我认为我已经正确地连接了所有内容,所以有人可以建议为什么我会收到此链接器错误吗?

2 个答案:

答案 0 :(得分:0)

将CPP文件添加到项目

答案 1 :(得分:0)

您使用的是什么编译器? Gcc(mingw)不支持#pragma once使用代码保护来避免'多重定义'。

#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass {
...
}
#endif