2015-07-20 75 views
1

我想在omnet ++中设计一个网络(随机图),我想使用柠檬图库解析网络节点。我已经安装了该库,如果我尝试使用命令行g++ -o file file.cpp/cc -lemon在任何图形中编译任何具有节点和边的正常C++文件,它都可以正常工作。但是,当我与我的OMNET ++项目之一(现在在它没有任何关系),试了一下它的代码如下如何在Omnet ++项目上使用柠檬图库?

#include <omnetpp.h> 
#include <iostream> 
#include <lemon/list_graph.h> 
using namespace lemon; 
using namespace std; 

class Facility : public cSimpleModule 
{ 
    protected: 
    virtual void initialize(); 
    virtual void handleMessage(cMessage *msg); 

}; 

Define_Module(Facility); 

void Facility :: initialize(){ 


} 

void Facility :: handleMessage(cMessage *msg){ 

}` 

的包括报头是尖括号(不带双引号混淆)。因此,当我构建代码时,出现以下错误:

Description Resource Path Location Type 
‘class cEnvir’ has no member named ‘push_back’ PSUC  line 686, external location: /usr/local/include/lemon/bits/graph_extender.h C/C++ Problem 
‘class cEnvir’ has no member named ‘push_back’ PSUC  line 687, external location: /usr/local/include/lemon/bits/graph_extender.h C/C++ Problem 
‘test’ does not name a type test.cc /ztest line 9 C/C++ Problem 
invalid use of qualified-name ‘cSimulation::getActiveEnvir’ PSUC  line 69, external location: /home/vijay/omnetpp-4.6/include/cenvir.h C/C++ Problem 
make: *** [out/gcc-debug//psuc.o] Error 1 PSUC   C/C++ Problem 
make: *** [out/gcc-debug//test.o] Error 1 ztest   C/C++ Problem 
no matching function for call to ‘lemon::AlterationNotifier<lemon::GraphExtender<lemon::ListGraphBase>, lemon::ListGraphBase::Arc>::add(cEnvir&)’ PSUC  line 688, external location: /usr/local/include/lemon/bits/graph_extender.h C/C++ Problem 

为什么Omnet ++代码不能与Lemon图库兼容?

+0

http://stackoverflow.com/questions/19912682/c-error-no-matching-function-for-call-to –

回答

2

的OMNeT ++包括用于cEnvir.hev宏定义(这是从omnetpp.h包括)

#define ev (*cSimulation::getActiveEnvir()) 

因为你包括omnetpp.hgraph_extender.h之前,该宏是在库的头文件,这与其作为利用冲突扩大在

ev.push_back(Parent::direct(edge, true)); 

变量名的简单的解决办法是之前包括,所以当读取graph_extender.h时宏未定义。如果这是不可能的,你可能会有一些运气在手动定义宏之前(并且可能在之后恢复定义),如下所示。

#pragma push_macro("ev") 
#undef ev 
#include "graph_extender.h" 
#pragma pop_macro("ev") 
+0

非常感谢你,它的工作! –

相关问题