open62541:构建PubSub示例时出错

问题描述 投票:0回答:1

目前,我正在尝试构建open62541实现的PubSub示例。我已经好几次经历了documentation on how to build the examples,但我无法理解。

我试图编译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编译它并获取其他丢失的文件或目录错误等等...

我也尝试编译open62541的整个include文件夹,但我也得到“没有这样的文件或目录”错误:

gcc -std=c99 -I /home/theresa/Desktop/open62541/include -o PubSub_Subscribe_Example open62541.c tutorial_pubsub_subscribe.c

我还注意到open62541 master提供的所有示例中,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头文件?

gcc publish-subscribe opc opc-ua open62541
1个回答
1
投票

我按照“使用CMake for Windows构建”的说明获得了成功。 使用cmake-gui我选择了(高级)功能:UA_BUILD_EXAMPLES,UA_ENABLE_PUBSUB,UA_ENABLE_PUBSUB_INFORMATIONMODEL,UA_ENABLE_PUBSUB_INFORMATIONMODEL_METHODS和UA_NAMESPACE_ZERO = FULL

© www.soinside.com 2019 - 2024. All rights reserved.