【问题标题】:How to use NetworKit as a library in OMNeT++?如何在 OMNeT++ 中使用 NetworKit 作为库?
【发布时间】:2019-05-27 12:20:10
【问题描述】:

我正在尝试构建 NetworKit 的 C++ 核心,我想将它用作 OMNeT++ 中的库。我按照 README 文件中的说明使用 cmakemake all 构建代码。然后,我尝试按照将 NetworKit 用作库部分中的说明进行操作,但那里提供的示例与源代码不一致。特别是,目录NetworKit/graph 不包含Graph.h 文件。有一个Graph.hpp 文件,但在另一个目录中。此外,缺少LibDemo.cpp 文件。 README 文件是否已过时或我在这里遗漏了什么?

编辑
这是我上面帖子的更新。显然 README 文件不是最新的。无论如何,我构建了 NetworKit 的 C++ Core。我将该库包含在我的 OMNeT++ 应用程序中,如下所示:
#include <graph/Graph.hpp>
在OMNeT++中,在我的项目Properties | OMNeT++ | Makemake,然后选择src | Options | Custom,我添加了以下内容:

INCLUDE_PATH += -I/path/to/networkit/include/networkit
LIBS += -L/path/to/networkit/build_lib -lnetworkit

当我构建我的 OMNeT++ 项目时,我收到以下错误:

/path/to/networkit/include/networkit/graph/../Globals.hpp:42:14: error: expected unqualified-id 
const double PI = 2.0*std::acos(0);
             ^
/path/to/omnetpp-5.4.1/include/omnetpp/simkerneldefs.h:47:19: note: expanded from macro 'PI'
#define PI        3.141592653589793
                  ^

谁能帮我解决这个问题?提前谢谢!

【问题讨论】:

  • const double PI 之前添加一个#undef PI。或者注释掉其中一个(可能是 const double)。
  • 并且请不要将多个不相关的问题放入一个问题中,创建一个新问题。 (一个可以接受的答案是什么样的?每个人都必须回答所有部分吗?)
  • 第二个选项(注释行)会触发 NetworKit 中的编译错误。第一个工作正常,我能够构建 NetworKit 和我的 OMNeT++ 项目。但是,在启动应用程序时出现此错误:<!> Error: Cannot load library '../../src//libhetvnet.so': libnetworkit.so: cannot open shared object file: No such file or directory。知道为什么吗?
  • 我通过将libnetworkit.so 复制到我的omnetpp.ini 文件的同一目录中解决了这个问题。我承认这可能不是最优雅的解决方案,但它对我有用。

标签: c++ omnet++ networkit


【解决方案1】:

你是对的,文档已经过时了,LibDemo.cpp在这里被删除了:https://github.com/kit-parco/networkit/commit/a5b2c1f0c9336e783c8fb0cd956326d960451914

如果您想要文档的这部分仍然有效的旧版本,那就是版本 4.2,这是该文件的最后一个版本。有人出于某种原因在此处复制了该版本:https://github.com/SharafMohamed/NetworKit

【讨论】:

  • 谢谢。我往前走,又遇到了另一个问题。我将更新我的初始帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
相关资源
最近更新 更多