VS2019编译使用open62541

编译open62541:

这里是在win10系统VS2019+QT5.15.2 开发OPC UA
首先下载open62541,这里使用的是open62541-1.3.9,前提是已经安装好cmake

1.使用cmake-gui编译:

在下载的open62541中新建一个名为 build 的文件夹
打开cmake-gui,我的 .exe 路径 E:\Tool\cmake\bin ,如下图

在这里插入图片描述

where is the source code 栏填入 open62541 的路径,
where to build the binaries 栏填入新建的 build 文件夹的路径
点击左下角的Configure按钮,弹出下图界面:

在这里插入图片描述

将VS2015改成VS2019,点击 Finish 按钮

在这里插入图片描述
红线处必须勾选
然后点击Generate按钮,出现两个done表示成功
此时去build文件夹内查看出现了 open62541.sln文件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

打开.sln文件或者点击 Open Project 按钮,出现以下界面
右键点击解决方案,生成解决方案,无报错

在这里插入图片描述
此时去build文件夹内查看出现了 open62541.h 和 open62541.c 文件
在下图路径内还出现了 open62541.lib 文件

在这里插入图片描述
在这里插入图片描述
至此编译完成

2.VS2019配置:

此时新建项目
#include “open62541.h” 后生成解决方案时时会出现一系列LNK2019无法解析的外部符号报错:
错误 “error LNK2019: 无法解析的外部符号 _WSAStartup@8,该符号在函数 _main 中被引用”
这是由于ws2_32.lib 文件的缘故,去搜索下载一个ws2_32.lib放到项目文件夹内,下面两种方法只能使用一个
法一:
直接在相应头文件的下方添加一句编译器指令,别的什么操作也就不用管了:

#pragma comment(lib, "WS2_32.lib")

或者使用法二:
项目属性—>链接器---->输入---->附加依赖项---->在最前面添加“ws2_32.lib”
在这里插入图片描述

此时便不再报错,使用如下客户端代码测试也不会报错,即表示成功。

int testOPC::Practice()
{
	UA_Client* client = UA_Client_new();//创建Client类
	UA_ClientConfig_setDefault(UA_Client_getConfig(client));
	//连接到服务器
	UA_StatusCode retval = UA_Client_connect(client, "opc.tcp://localhost:4840");
	if (retval != UA_STATUSCODE_GOOD)//如果返回的状态不是”好的“
	{
		UA_Client_delete(client);
		return (int)retval;//返回错误状态
	}

	/* Read the value attribute of the node. UA_Client_readValueAttribute is a
	* wrapper for the raw read service available as UA_Client_Service_read. */
	UA_Variant value; // 创建一个容器,可以包含任何类型的标量值和数组
	UA_Variant_init(&value);//初始化容器

	/* NodeId of the variable holding the current time */
	const UA_NodeId nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERSTATUS_CURRENTTIME);
	retval = UA_Client_readValueAttribute(client, nodeId, &value);

	if (retval == UA_STATUSCODE_GOOD && UA_Variant_hasScalarType(&value, &UA_TYPES[UA_TYPES_DATETIME]))
	{
		UA_DateTime raw_date = *(UA_DateTime*)value.data;
		UA_DateTimeStruct dts = UA_DateTime_toStruct(raw_date);
		UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "date is: %u-%u-%u %u:%u:%u.%03u\n",
			dts.day, dts.month, dts.year, dts.hour, dts.min, dts.sec, dts.milliSec);
	}

	/* Clean up */
	UA_Variant_clear(&value);
	UA_Client_delete(client); /* Disconnects the client internally */

	system("pause"); // 防止控制台一闪而过

	return EXIT_SUCCESS;
}

本文借鉴了以下文章

windows网络编程:visual studio出现 ”error LNK2019: 无法解析的外部符号 _WSAStartup@8,该符号在函数 _main 中被引用“问题,怎么解决

丶吃鱼的猫【零】基于open62541项目编译单独的open62541源文件和头文件

学习open62541 — [19] 使用Visual Studio编译及使用open62541

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译open62541客户端,您可以按照以下步骤进行操作: 1. 首先,确保您的计算机上已经安装了C/C++开发环境,包括编译器和构建工具,如GCC、CMake和Make等。 2. 下载open62541的源代码。您可以在open62541的官方GitHub页面上找到最新的发布版本。点击“Code”按钮并选择“Download ZIP”来下载源代码压缩包。解压缩之后,您将会得到一个名为open62541的文件夹。 3. 进入open62541的根目录。在根目录中,您会发现一个名为CMakeLists.txt的文件,这是open62541的CMake构建文件。 4. 创建一个名为build的子目录,并在其中进入命令行终端。使用cd命令进入到open62541根目录下的build目录。 5. 在命令行终端中运行以下命令: ``` cmake .. make ``` 6. 这将开始编译open62541客户端。编译过程可能需要一些时间,具体取决于您的计算机性能和源代码的大小。 7. 当编译完成后,您将会在build目录中找到编译生成的可执行文件。根据您的操作系统和CMake设置,可能会有一个名为open62541-client的文件。 8. 您可以通过命令行终端运行客户端程序。在命令行中输入以下命令: ``` ./open62541-client ``` 9. 至此,您已经成功编译并运行了open62541客户端。 请注意,上述步骤仅提供了一个基本的编译过程。如果您在编译过程中遇到问题,建议查阅open62541的官方文档和GitHub页面上的详细说明,或者参考官方提供的编译指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值