第一次问。
这是交易:
我有一个助手类(至少现在它是一个类),它有几个数学函数,我在整个项目中使用。
#ifndef CUSTOM_UTILS_H
#define CUSTOM_UTILS_H
//---------------------------------------------------------
#include <stdlib.h>
#define _USE_MATH_DEFINES
#include <math.h>
class cUtil {
public:
static int utilsRandom(int from, int to);
static double utilsRandom(double from, double to);
static double giveAngle(double x, double y);
static double FoV(double cx, double cy,
double fx, double fy,
double tx, double ty,
double radius);
};
//---------------------------------------------------------
#endif
执行:
#define _USE_MATH_DEFINES
#include "customUtils.h"
//---------------------------------------------------------
int cUtil::utilsRandom(int from, int to) {
if (from == to) {
return from;
}
return (rand() % (to - from)) + from;
}
//---------------------------------------------------------
double cUtil::utilsRandom(double from, double to) {
...
}
//---------------------------------------------------------
double cUtil::giveAngle(double x, double y) {
...
}
//---------------------------------------------------------
double cUtil::FoV(double cx, double cy,
double fx, double fy,
double tx, double ty,
double radius) {
...
}
//---------------------------------------------------------
(移除了 3 个主体以节省帖子空间)
现在,当我使用它时,假设在一个名为“creature”的类中,我将 customUtils.h 文件包含在“creature”的标题中。并使用以下 4 个函数中的任何一个:cUtil::func_name()。有时我会遇到未解决的外部错误,例如
LNK2001: unresolved external symbol "public: static double __cdecl cUtil::utilsRandom
(double,double)" (?utilsRandom@cUtil@@SANNN@Z) C:\Users\Rockstrongo\Documents\Projects
\nnEvo\nnEvo\net.obj
它出现在 cUtil 中的所有函数以及使用这些函数的所有类中。
我说它有时会出现,因为它就是这样做的——我将重建项目,它会重新出现。为了再次清理它,我会更改 cUtils 代码的某些部分,或者它包含在其他类中的方式,或者任何让它再次运行的东西。有一段时间,清理-> 编译 customUtils.cpp-> 然后构建其余的工作,但不再工作。
对于像我这样未经训练的眼睛来说,这似乎是完全随机的,我已经竭尽全力抓住。我正在使用 Microsoft Visual Studio 2010。这是一个使用 openGL 和 glut 的控制台项目。