【发布时间】:2015-07-08 12:38:59
【问题描述】:
我创建了我的第一个 OMNeT++/veins 项目,但无法启动模拟。 你能帮帮我吗?
我想改变我的问题 - 有没有一种简单的方法可以创建一个类似于静脉的 RSUExampleScenario 的项目,而不是在静脉/示例/我的文件夹下,而是在单独的项目和工作区中?我必须为此采取哪些步骤?
我想从静脉创建一个类似于 RSUExampleScenario 的项目,但使用其他场景并使用其他 OMNeT++ 模块。当我在静脉/示例/我的文件夹下创建我的项目,并将我的新 .ned 文件放在静脉结构下时,它运行良好。
现在我创建了新项目,包括带有 .ned 和 c++/h 文件的文件夹,例如文件夹 connection(Connection.ned、Connection.cc、Connection.h、package.ned)和文件夹 node (CloudVehicleScenarioMessage.ned, Cloud.ned) 和模拟文件夹 cloudvehiclehi (omnetpp.ini)。
当我开始模拟时,我收到错误:
网络设置期间模块 (cCompoundModule) CloudVehicleScenarioMessage (id=1) 出错:找不到类“Connection”——可能其代码未链接,或者该类未使用 Register_Class() 注册,或者在模块和通道的情况下,使用 Define_Module()/Define_Channel()。
我猜NED文件已经加载了,但是找不到c++文件中的类,虽然我使用了Define_Module。 Cloud 只是一个复合模块,没有任何自己的 c++ 实现,它不会产生任何问题。 Connection 是一个简单的模块,引用类 Connection.cc,其中调用了 Define_Module() 并在加载时导致错误。 我的所有文件夹,如 node 或 connection 都包括在内,我可以在 Project->Properties->Paths and Symbols->Includes 下看到。
我已经尝试重建 OMNeT++(如 https://www.linkedin.com/grp/post/3801609-234767834 所述)并为我的类定义命名空间(如 Problem in defining a module in omnetpp 所述),但没有帮助。
我证明了我的 makefile 和文件夹已链接(如此处所述 https://groups.google.com/forum/#!topic/omnetpp/Cl48hVgkbQ0)。
CloudVehicleScenarioMessage.ned 是我在 omnetpp.ini 中的网络。
nodes/CloudVehicleScenarioMessage.ned:
package cloudbasedcsw.nodes;
import cloudbasedcsw.nodes.ScenarioMobility;
import cloudbasedcsw.nodes.Cloud;
import cloudbasedcsw.connection.Connection;
network CloudVehicleScenarioMessage extends ScenarioMobility
{
@display("bgb=540,555");
submodules:
cloud[1]: Cloud {
@display("p=150,140;b=10,10,oval");
}
con: Connection {
@display("p=200,40;b=10,10,oval");
}
}
模块连接的ned文件:
connection/Connection.ned
package cloudbasedcsw.connection;
simple Connection{
@class(CloudBasedCSW::Connection);
}
类连接,找不到:
连接/Connection.cc
#include <Connection.h>
#include <VehicleListener.h>
#include <iostream>
using CloudBasedCSW::Connection;
Define_Module(CloudBasedCSW::Connection);
void Connection::initialize(int stage){
}
void Connection::connectToCloud(cModule* node){
}
void Connection::disconnectFromCloud(cModule* node){
}
连接.h
#ifndef CONNECTION_H_
#define CONNECTION_H_
#include <omnetpp.h>
namespace CloudBasedCSW{
class Connection: public cSimpleModule{
public:
cModule* scenario;
void connectToCloud(cModule* node);
void disconnectFromCloud(cModule* node);
protected:
virtual void initialize(int stage);
private:
cModule* cloud;
int currentId;
int gateCloudInId;
int gateCloudOutId;
};
}
#endif /* CONNECTION_H_ */
【问题讨论】:
标签: eclipse-cdt omnet++