初めて尋ねる。
契約は次のとおりです。
プロジェクト全体で使用する、いくつかの数学関数を持つヘルパー クラス (少なくとも今はクラスです) があります。
#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」というクラスで、「creature」のヘッダーに customUtils.h ファイルを含めます。cUtil::func_name() のように 4 つの関数のいずれかを使用します。次のような未解決の外部エラーが発生することがあります
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 を使用したコンソール プロジェクトです。