비슷한 문제를 보았지만 내 문제를 해결하는 데 도움이되지 않았습니다.링커 오류 : 정의되지 않은 참조 C++
저는 C++로 프로젝트를 만들고 컴파일, 링크 및 실행하기 위해 UNIX에서 작업하고 있습니다. 내 특정 문제는 별도의 파일에 선언하는 메서드에 대한 정의되지 않은 참조입니다.
이int SharedCache::replaceLine(ullong address){
int evictPID = -1;
int cacheSet = calcCacheSet(address);
//random uniformly-distributed value for cache line
float numLines = static_cast<float>(CACHE_LINES_PER_SET);
uint cacheLine = static_cast<uint>(uniformDistr(numLines));
if(cache[cacheSet][cacheLine] != NULL){
evictPID = cache[cacheSet][cacheLine]->PID;
}
uint PID= calcPID(address);
uint tag= calcTag(address);
cache[cacheSet][cacheLine]->setLine(PID, tag); //mutex method
return PID;
}
라인 uint cacheLine = static_cast<uint>(uniformDistr(numLines));
내가 다른 파일에서 사용하려는 함수를 호출한다 : 파일 SharedCache.cpp에서
uniformDistr (float); distributions.h 헤더에 선언되어 있으며 distributions.cpp에 정의되어 있습니다. 내 프로젝트 옵션에서 필자는 링커 플래그 -distributions를 설정하고 distributions.cpp를 컴파일하여 distributions.o 파일이 링크되어 있는지 확인했습니다.
여기에서 문제가 해결되지 않았기 때문에 어디로 가야할지 모르겠다.
C++은 정상적으로 보입니다. 링커 오류는 종종 실수를 의미합니다.Makefile을 올리시겠습니까? –
Makefile은 오버플로 텍스트 포맷으로 포맷하는 것이 매우 길고 쉽지 않습니다. 여전히 도움이된다고 생각한다면 –