Я Ван определить простую функцию в моей программе, поэтому я добавил этот прототип в файле .h:проблема с простой функцией
double TimeCalculation (Ptr <Node> mynode,Ptr <Node> nb_node, Ptr <Ipv4> nbipv4, Ptr <Ipv4> myipv4);
тогда я написал эту функцию:
double
TimeCalculation (Ptr <Node> mynode, Ptr <Node> nb_node, Ptr <Ipv4> nbipv4, Ptr <Ipv4> myipv4)
{
float cpx,expx,myexpx;
float cpy,expy,myexpy;
float cpz,expz,myexpz;
Vector3D cPosition;
double itspeed;
/////////// finding current position and exposition for my current neighbor
cPosition = nbipv4->GetObject<MobilityModel>()->GetPosition();
cpx = nbipv4->GetObject<MobilityModel>()->GetPosition().x;
cpy = nbipv4->GetObject<MobilityModel>()->GetPosition().y;
cpz = nbipv4->GetObject<MobilityModel>()->GetPosition().z;
expx = nb_node->exPosition.at(0);
expy = nb_node->exPosition.at(1);
expz = nb_node->exPosition.at(2);
itspeed = nbipv4->GetObject<ConstantSpeedPropagationDelayModel>()->GetSpeed();
Vector3D normit(0.0,0.0,0.0),mycPosition;
//Ptr <Node> mynode;
// Ptr <Node> nb_node;
//v1
//Vector myexposition = Ipv4->GetObject<Node>()->GetmyPosition();
float normitx= cpx - expx;
float normity= cpy - expy;
float normitz= cpz - expz;
float itVnorm = sqrt((normitx * normitx) + (normity * normity)+(normitz * normitz));
//hamide:update the amount of exposition to current position
//pos.insert(it2 ,cPosition);
nb_node->exPosition.at(0) = cPosition.x;
nb_node->exPosition.at(1) = cPosition.y;
nb_node->exPosition.at(2) = cPosition.z;
//for calculating v2
//finding exposition for my node which is calculating MPR set
myexpx = mynode->exPosition.at(0);
myexpy = mynode->exPosition.at(1);
myexpz = mynode->exPosition.at(2);
mycPosition.x = myipv4->GetObject<MobilityModel>()->GetPosition().x;
mycPosition.y = myipv4->GetObject<MobilityModel>()->GetPosition().y;
mycPosition.z = myipv4->GetObject<MobilityModel>()->GetPosition().z;
double mycpx = myipv4->GetObject<MobilityModel>()->GetPosition().x;
double mycpy = myipv4->GetObject<MobilityModel>()->GetPosition().y;
double mycpz = myipv4->GetObject<MobilityModel>()->GetPosition().z;
//Vector norm(0.0,0.0,0.0);
double normx= mycpx - myexpx;
double normy= mycpy - myexpy;
double normz= mycpz - myexpz;
//myexPosition.at(1) = mycPosition.at(1);
//myexPosition.at(2) = mycPosition.at(2);
//myexPosition.at(3) = mycPosition.at(3);
mynode->exPosition.at(0) = mycPosition.x;
mynode->exPosition.at(1) = mycPosition.y;
mynode->exPosition.at(2) = mycPosition.z;
double myVnorm = sqrt((normx * normx)+(normy * normy)+(normz * normz));
//v1*v2
float entmulti = ((normitx * normx) + (normity * normy) + (normitz * normz));
// calculating cos for the angel between two vectors for two nodes
float cos = (entmulti /(itVnorm * myVnorm));
//the maximum distance a node can see its neighbor its based on the
//settings we choose for our topology and simulation condition
int R = 220;
//v is the speed of each node
double myspeed = myipv4->GetObject<ConstantSpeedPropagationDelayModel>()->GetSpeed();
double Td = (R * R)/((myspeed *myspeed)+(itspeed * itspeed)-(2 * itspeed * myspeed*cos));
return sqrt(Td);
}
, но когда я запускаю моя программа имеет эту ошибку:
debug/libns3.so: undefined reference to `ns3::olsr::RoutingProtocol::TimeCalculation(ns3::Ptr<ns3::Node>, ns3::Ptr<ns3::Node>, ns3::Ptr<ns3::Ipv4>, ns3::Ptr<ns3::Ipv4>)'
collect2: ld returned 1 exit status
, а также существует проблема, которая не работает идеально, я буду полностью thankfu l если кто-то поможет мне с этой ошибкой, а также если у вас есть другая проблема в моем коде.
Как мне это сделать, многие из них работали для меня, и я использовал их. – bahar