2013-02-08 5 views
0

테스트 파일에 포함 된 사용자 정의 라이브러리 (및 해당 cpp 파일)가 있습니다. 테스트 파일에서 함수를 호출하려고하면 "< 함수 이름에 대한 정의되지 않은 참조"오류가 발생합니다. 도서관 파일에 물건을 넣는 것에 익숙하지 않아 도움이된다.사용자 라이브러리에서 기능을 찾을 수 없음

Test.cpp에

#include<iostream> 
#include "input.h" 
#include<vector> 

using namespace std; 

int main(int argc, char* argv[]) { 
    vector<vector<vector<loc> > > building; 
    loc start = {0, 0, 0, '.', false}; 
    Input(building, start); 
} 
+0

제대로 연결하지 않은 것처럼 보이지만 그게 무엇이든간에 아마도 http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error에 있습니다. -and-how-do-i-fix – chris

+0

추측 .. 1. 당신은 그것에 연결되어 있지 않습니까? 2. 올바른 순서로 링크하지 않습니까? – thang

+0

올바르게 연결하는 방법을 알고 있습니까? 나는 그저 거기를 들여다 보았고, 내가 잘못한 것을 보지 못했거나 또 다른 방법으로해야만했던 것을 볼 수 없다. – camdroid

답변

0

#include<iostream> 
#include<cstdlib> 
#include<unistd.h> 
#include<getopt.h> 
#include "input.h" 

using namespace std; 

void Input(vector<vector<vector<loc> > > &b, loc & start) { 
    //Do stuff 
} 

input.cpp
#ifndef LOC_H 
#define LOC_H 
#include<vector> 
struct loc{ 
    int room, row, col; 
    char c; 
    bool stacked; 
    //loc *north, *east, *south, *west; 
}; 
#endif 
void Input(std::vector<std::vector<std::vector<loc> > > &b, loc & start); 

input.h에서 모든 관련 라이브러리 없습니다. 링크 할 때 모든 소스 파일의 오브젝트 파일을 링크하면됩니다. 가장 쉬운 방법은 소스를 컴파일하는 것입니다

g++ -o test test.cpp input.cpp 

당신이 개별적으로 컴파일 할 수 있습니다 더 큰 프로젝트, 메이크 파일 또는 스크립트에 의해 제어해야합니다.

g++ -c test.cpp 
g++ -c input.cpp 
g++ -o test test.o input.o 

이것은 약간 어색해 보이지만 장면 뒤에서 무슨 일이 일어나는지 보여줍니다.