【发布时间】:2019-05-27 12:20:10
【问题描述】:
我正在尝试构建 NetworKit 的 C++ 核心,我想将它用作 OMNeT++ 中的库。我按照 README 文件中的说明使用 cmake 和 make 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文件的同一目录中解决了这个问题。我承认这可能不是最优雅的解决方案,但它对我有用。