처음으로 묻습니다.또 다른 ureolved 외부 케이스
여기 거래입니다 :
나는 도우미 클래스가 나는 프로젝트 전반에 걸쳐 사용하는 것이 여러 수학 기능을 가지고 그 (적어도 지금은 클래스이다).
#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 파일을 포함시킵니다. 그리고 다음과 같은 4 가지 함수 중 하나를 사용하십시오 : cUtil :: func_name(). 그것은 cUtil의 모든 기능과 그 기능을 사용하는 모든 클래스에 대한 표시 등
LNK2001: unresolved external symbol "public: static double __cdecl cUtil::utilsRandom
(double,double)" ([email protected]@@[email protected]) C:\Users\Rockstrongo\Documents\Projects
\nnEvo\nnEvo\net.obj
로 때때로 나는 확인되지 않은 외부 오류가 발생합니다.
나는 때때로 그 일을하기 때문에 나타납니다. 나는 프로젝트를 재건 할 것이고 재개발 될 것입니다. 다시 스크럽을하려면 cUtils 코드의 일부분을 변경하거나 다른 클래스에 포함 된 방식이나 다시 실행하게하는 방식을 변경합니다. 얼마 동안, customUtils.cpp 컴파일 -> 컴파일 - 나머지 작업은 더 이상 작동하지 않습니다.
내 것과 같이 훈련받지 않은 눈에게는 이것은 완전히 무작위로 보입니다. 그리고 나는 파악할 짚에서 모두 벗어났습니다. Microsoft Visual Studio 2010을 사용하고 있습니다. OpenGL 및 glut을 사용하는 콘솔 프로젝트입니다.
나는 내 기능을 utilsRandomInt 및 utilsRandomDouble이라고 각각 변경했습니다. 오버로드 된 함수에 대해 서로 다른 리턴 유형을 설정할 수 없습니다. 또한이 실수로 '릴리스 모드에서 내 프로그램 충돌'문제가 수정 된 것 같습니다. – user1354455
컴파일러 구현 문제는 반환 된 형식에 따라 함수가 다를 수 없다는 것입니다. 초대 할 수는 없지만 C++에서 작동하는 방식입니다. –