0

当我的代码调用某个函数时,出现错误:

H:\workspace\HW5\HW5\Manager.obj

错误 22 错误 LNK2019:未解析的外部符号“public: void __thiscall Shalishut::Task8_MoveVehicleFromBaseToBase(class Military *,char const *,char *,char *)”(?Task8_MoveVehicleFromBaseToBase@Shalishut@@QAEXPAVMilitary@@PBDPAD2@Z) 在函数中引用"public: void __thiscall Manager::TaskExecute(class Task *,class Military *,class Shalishut *,char * * const)" (?TaskExecute@Manager@@QAEXPAVTask@@PAVMilitary@@PAVShalishut@@QAPAD@Z) H: \workspace\HW5\HW5\Manager.objH:\workspace\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);
    }
   }
  }
 }
}
4

1 回答 1

0

我相信函数声明需要是:

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

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

于 2010-09-22T17:21:12.017 回答