Я пытаюсь создать ядро С++ для NetworKit, и я хотел бы использовать его в качестве библиотеки в OMNeT++. Я следовал инструкциям из файла README, чтобы создать код с помощью cmake
и make all
. Затем я попытался выполнить инструкции из раздела Используйте NetworKit в качестве библиотеки, но представленные там примеры не согласуются с исходным кодом. В частности, каталог NetworKit/graph
не содержит файла Graph.h
. Есть файл Graph.hpp
, но в другом каталоге. Также отсутствует файл LibDemo.cpp
. Файл README устарел или я что-то упустил?
РЕДАКТИРОВАТЬ
Это дополнение к моему посту выше. Судя по всему, файл README устарел. В любом случае я создал C++ ядро NetworKit. Я включил библиотеку в свое приложение 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
^
Кто-нибудь может мне с этим помочь? Заранее спасибо!
И, пожалуйста, не добавляйте несколько несвязанных вопросов в вопрос, создайте новый. (как должен выглядеть приемлемый ответ? Должен ли каждый отвечать на все части?)
Второй вариант (комментирование строки) вызывает ошибки компиляции в 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
. Я признаю, что это может быть не самое элегантное решение, но оно сработало для меня.
Вы правы, документация устарела, LibDemo.cpp
было удалено здесь: https://github.com/kit-parco/networkit/commit/a5b2c1f0c9336e783c8fb0cd956326d960451914
Если вам нужна более старая версия, в которой эта часть документа все еще действительна, это будет версия 4.2, которая является последней версией с этим файлом. Кто-то почему-то сделал клон этой версии здесь: https://github.com/ШарафМохамед/NetworKit
Спасибо. Я пошел вперед и столкнулся с другой проблемой. Я обновлю свой первоначальный пост.
Поставьте
#undef PI
передconst double PI
. В качестве альтернативы закомментируйте один из них (вероятно, const double).