open62541: ошибка при создании примера PubSub
В настоящее время я пытаюсь построить пример PubSub реализации open62541. Я уже несколько раз просматривал документацию о том, как создавать примеры, но не могу понять.
Я попытался скомпилировать учебные примеры PubSub. Это включает в себя файлы tutorial_pubsub_publish.c и tutorial_pubsub_subscribe.c. После того, как я клонировал репозиторий, я построил библиотеку следующим образом:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -
DUA_ENABLE_AMALGAMATION=ON -DUA_ENABLE_PUBSUB=ON ..
make
Сначала я скомпилировал пример публикации, который работал:
gcc -std=c99 -o PubSub_Publish_Example open62541.c tutorial_pubsub_publish.c
Затем я попытался скомпилировать пример подписки таким же образом, как это:
gcc -std=c99 -o PubSub_Publish_Example open62541.c tutorial_pubsub_subscribe.c
Это породило множество ошибок - все говорили: "Нет такого файла или каталога (первая ошибка была для #include "ua_architecture_base.h"). Затем я попытался скомпилировать его с помощью ua_architecture_base.h и получить другую отсутствующую ошибку файла или каталога и т. Д....
Я также попытался скомпилировать целую папку include в open62541, но я также получаю ошибки "Нет такого файла или каталога":
gcc -std=c99 -I /home/theresa/Desktop/open62541/include -o PubSub_Subscribe_Example open62541.c tutorial_pubsub_subscribe.c
Я также заметил, что из всех примеров, предоставленных мастером open62541, файл tutorial_pubsub_subscribe.c является единственным примером, который НЕ включает папку open62541.h. Вместо этого он включает несколько других заголовочных файлов:
#include "ua_pubsub_networkmessage.h"
#include "ua_log_stdout.h"
#include "ua_server.h"
#include "ua_config_default.h"
#include "ua_pubsub.h"
#include "ua_network_pubsub_udp.h"
#ifdef UA_ENABLE_PUBSUB_ETH_UADP
#include "ua_network_pubsub_ethernet.h"
#endif
#include "src_generated/ua_types_generated.h"
#include <stdio.h>
#include <signal.h>
Итак, как я могу скомпилировать и запустить пример tutorial_pubsub_subscribe.c и почему пример подписчика не включает заголовочный файл open62541?
1 ответ
У меня был успех, следуя инструкциям "Сборка с CMake для Windows".
Используя cmake-gui, я выбрал (расширенные) функции: UA_BUILD_EXAMPLES, UA_ENABLE_PUBSUB, UA_ENABLE_PUBSUB_INFORMATIONMODEL, UA_ENABLE_PUBSUB_INFORMATIONMODEL_METHODS и UA_NAMESPACE_ZERO = FULL