c++ - 未定义的引用 C++

标签 c++ undefined-reference

我正在尝试编译我从 Java 转换的第一个合法程序(我运行了一个测试 hello world 类型程序来检查我的编译器并且它可以工作)。 共有三个文件:

main.cpp

#include <iostream>
#include "skewNormal.h"

using namespace std;

double getSkewNormal(double, double);

int main(int argc, char **argv) {
    cout << getSkewNormal(10.0, 0.5) << endl;
}

skewNormal.cpp

#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>

using namespace std;

#include <skewNormal.h>

double SkewNormalEvalutatable::evaluate(double x)
{
    return 1 / sqrt(2 * M_PI) * pow(M_E, -x * x / 2);
}

SkewNormalEvalutatable::SkewNormalEvalutatable()
{
}

double sum (double start, double stop,
                               double stepSize,
                               Evaluatable evalObj)
{
  double sum = 0.0, current = start;
  while (current <= stop) {
    sum += evalObj.evaluate(current);
    current += stepSize;
  }
  return(sum);
}

double integrate (double start, double stop,
                                     int numSteps,
                                     Evaluatable evalObj)
{
  double stepSize = (stop - start) / (double)numSteps;
  start = start + stepSize / 2.0;
  return (stepSize * sum(start, stop, stepSize, evalObj));
}

double getSkewNormal(double skewValue, double x)
{
  SkewNormalEvalutatable e;
  return 2 / sqrt(2 * M_PI) * pow(M_E, -x * x / 2) * integrate(-1000, skewValue * x, 10000, e);
}

skewNormal.h

#ifndef SKEWNORMAL_H_INCLUDED
#define SKEWNORMAL_H_INCLUDED

class Evaluatable {
public:
  virtual double evaluate(double x);
};

class SkewNormalEvalutatable : Evaluatable{
public:
  SkewNormalEvalutatable();
  double evaluate(double x);
};

double getSkewNormal(double skewValue, double x);

double integrate (double start, double stop, int numSteps, Evaluatable evalObj);

double sum (double start, double stop, double stepSize, Evaluatable evalObj);

#endif // SKEWNORMAL_H_INCLUDED

编译产生以下错误:

main.cpp:9: undefined reference to `getSkewNormal(double, double)'

我在 Ubuntu 10.10 上使用 Code::Blocks。

最佳答案

您可能正在将 skewNormal.cpp 编译为 .o 文件,但在编译 main.cpp 时并未包含它。

关于c++ - 未定义的引用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284720/

相关文章:

c++ - 对本地对象的 undefined reference

c - GCC 程序未定义对函数的引用(多个文件夹)

c++ - 将源文件列表放入 Makefile 的最佳方法

c++ - 带有模板的 shared_ptr

c++ - C++中带括号的计算器

c - Windows 上的 Pthread - 未定义的 sleep 引用

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - 如何绘制 C++ Win32 控制台应用程序的输出?

c++ - 这是什么意思? (int &)a