我有两个omnetpp项目:Lab1和Lab2
从Lab1 .so库创建。实验2应该使用这个库。很清楚如何导入和使用.ned-files中声明的模块。当我尝试使用库中的消息类型(Bitmessage)时出现问题。
来自图书馆的bitmessage.msg:
message Bitmessage {
bool bit;
}
Lab2中的sSource.h:
#ifndef SSOURCE_H_
#define SSOURCE_H_
#include <omnetpp.h>
#include "bitmessage_m.h"
class sSource : public cSimpleModule
{
protected:
virtual void initialize();
virtual void handleMessage(cMessage *msg);
private:
double p;
};
Define_Module(sSource);
#endif /* SSOURCE_H_ */
sSource.cc - Lab2中的源文件,假设使用bitmessage:
#include <sSource.h>
/*virtual*/ void sSource::initialize()
{
p = par("p").doubleValue();
}
/*virtual*/ void sSource::handleMessage(cMessage *msg)
{
if (msg->getArrivalGate() == gate("in"))
{
delete msg;
Bitmessage* bit_msg = new Bitmessage(); // **(!!!)here is error**
int num_outs = this->gateSize("out");
for (int i = 0; i < num_outs; ++i)
{
send(bit_msg->dup(), "out", i);
}
delete bit_msg;
}
else
{
delete msg;
}
}
错误如下:
undefined reference to `Bitmessage::Bitmessage(char const*, int)'
如何处理?也许问题是编译器无法解释库中的.msg文件?