调用函数时链接错误

时间:2010-09-22 17:16:13

标签: linker-errors lnk2019

当我的代码调用某个函数时,我收到一个错误:

  

H:\工作空间\ HW5 \ HW5 \ Manager.obj

     

错误22错误LNK2019:未解析的外部符号“public:void   __thiscall Shalishut :: Task8_MoveVehicleFromBaseToBase(class   军事*,char const *,char *,char   *)“(?Task8_MoveVehicleFromBaseToBase @ Shalishut @@ QAEXPAVMilitary @@ PBDPAD2 @ Z)   在函数“public:void中引用   __thiscall Manager :: TaskExecute(类Task *,类Military *,类   Shalishut *,char * * const)“   (?TaskExecute @经理@@ QAEXPAVTask @@ PAVMilitary @@ PAVShalishut @@ QAPAD @ Z)   H:\工作空间\ HW5 \ HW5 \ Manager.objH:\工作空间\ HW5 \ HW5 \ Manager.obj

和:

  

错误LNK1120:1个未解析的外部H:\ workspace \ HW5 \ Debug \ HW5.exe

当我没有调用该函数时,一切正常并且项目构建。

以下是调用函数的代码:

shalishut->Task8_MoveVehicleFromBaseToBase(military,licenseId,campNameA,campNameB);

这是函数:

void Task8_MoveVehicleFromBaseToBase(Military* military,const char* licenseId,char* fromBase,char* toBase){
 if (military->IsBaseExist(fromBase)){
  if(military->FindBase(fromBase)->IsVehicleExist(licenseId)){
   if (military->IsBaseExist(toBase)){
    if(military->GetCountry()->IsRoadExist(military->FindBase(fromBase)->GetCityName(),military->FindBase(toBase)->GetCityName())){
     military->FindBase(toBase)->AddVehicleToBase( military->FindBase(fromBase)->RemoveVehicleFromBase(licenseId) );
     Time* time = Time::GetInstance();
     long double distance = military->GetCountry()->GetRoadDistance(military->FindBase(fromBase)->GetCityName(),military->FindBase(toBase)->GetCityName());
     Transport* transportToAdd = new Transport(time->GetTime(),(string)fromBase,(string)toBase,distance);
     military->FindVehicle(licenseId)->AddTransport(transportToAdd);
    }
   }
  }
 }
}

1 个答案:

答案 0 :(得分:0)

我相信函数声明需要:

void Shalishut::Task8_MoveVehicleFromBaseToBase(Military* military,const char* licenseId,char* fromBase,char* toBase) {
...
}

你没有真正为我们提供头文件,所以我假设该函数是shalishut类的成员。