2012-04-26 4 views
0

C++에서 ns2의 aodv 프로토콜을 수정 중입니다. 함수 호출시 오류가 발생합니다. rft_add. 여기에 파일을 넣을거야.ns2에서 C++ 정의되지 않은 참조

선언 파일 : aodv_rftable.cc AODV 프로토콜 파일에서 호출

aodv_rft_entry* 
aodv_rftable::rft_add(nsaddr_t dst, nsaddr_t src) 
{ 
aodv_rft_entry *rft; 
rft = new aodv_rft_entry; 
rft->rft_dst = dst; 
rft->rft_src = src; 
LIST_INSERT_HEAD(&rfthead, rft, rft_link); 
return rft; 
} 

:

void 
AODV::sendRequest(nsaddr_t dst) 
{ 
    // Allocate a RREQ packet 
    Packet *p = Packet::alloc(); 
    struct hdr_cmn *ch = HDR_CMN(p); 
    struct hdr_ip *ih = HDR_IP(p); 
    struct hdr_aodv_request *rq = HDR_AODV_REQUEST(p); 
    aodv_rt_entry *rt = rtable.rt_lookup(dst); 
    aodv_rft_entry *rft = aodv_rftable.rft_add(dst, index); 

    //Here i declare and fill the components of RREQ packet 

    rft = rftable.rft_add(dst, index); 
} 
aodv.cc 구현 파일

class aodv_rft_entry 
{ 
     friend class aodv_rftable; 
     friend class AODV; 
     friend class LocalRepairTimer; 

public: 
     aodv_rft_entry(); //Constructor 
     ~aodv_rft_entry(); 

protected: 
      LIST_ENTRY(aodv_rft_entry) rft_link; 
     nsaddr_t  rft_dst; 
     nsaddr_t  rft_src; 
     double   rft_lifetime; 
     u_int8_t  rft_relay; 
     u_int8_t  rft_forward; 
}; 

class aodv_rftable 
{ 
public: 
    aodv_rftable() { LIST_INIT(&rfthead); } 

     aodv_rft_entry*  head() { return rfthead.lh_first; } 

     aodv_rft_entry*  rft_add(nsaddr_t dst, nsaddr_t src); 
     void     rft_delete(nsaddr_t dst, nsaddr_t src); 
     aodv_rft_entry*  rft_lookup(nsaddr_t dst, nsaddr_t src); 
private: 
     LIST_HEAD(aodv_rfthead, aodv_rft_entry) rfthead; 
}; 

aodv_rftable.h 제가 NS2를 다시하려고하면

는 다음과 같은 오류가

정의되지 않은 참조가

답변

1

오류가 연결에서 발생 (INT, int)를 aodv_rftable 보인다 ..? 아마도 메이크 파일의 문제 일 것입니다. aodv_rftable.cc 오브젝트가 링크되어 있는지 확인하여 대상 실행 파일을 작성하십시오.