You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译带OpenSSL的Open62541库配置异常,连接S7-1500端点失败求助

解决open62541编译时安全策略未启用及CMake变量未使用警告问题

问题根源分析

CMake警告里提到的变量未被使用,说明你配置的部分CMake选项和当前用的open62541版本不匹配:

  • 新版本open62541已经把UA_ENABLE_CLIENT和UA_ENABLE_SERVER合并成UA_ENABLE_CLIENTSERVER(默认开启),单独设置这两个变量会被直接忽略。
  • 安全策略相关选项的命名可能已经变更,或者CMake没正确识别到OpenSSL,导致安全策略代码没被编译进库中。

解决方案步骤

1. 修正CMakeSettings.json配置

替换过时变量,确保OpenSSL路径正确,启用所需安全策略。以下是调整后的配置示例:

{
    "configurations": [
        {
            "name": "x64-Debug",
            "generator": "Ninja",
            "configurationType": "Debug",
            "inheritEnvironments": [ "msvc_x64_x64" ],
            "buildRoot": "${projectDir}\\out\\build\\${name}",
            "installRoot": "${projectDir}\\out\\install\\${name}",
            "cmakeCommandArgs": "",
            "buildCommandArgs": "",
            "ctestCommandArgs": "",
            "variables": [
                {
                    "name": "CMAKE_MSVC_RUNTIME_LIBRARY",
                    "value": "MultiThreadedDebugDLL",
                    "type": "STRING"
                },
                {
                    "name": "UA_ENABLE_AMALGAMATION",
                    "value": "OFF",
                    "type": "BOOL"
                },
                {
                    "name": "UA_BUILD_SHARED_LIBS",
                    "value": "OFF",
                    "type": "BOOL"
                },
                {
                    "name": "UA_ENABLE_CLIENTSERVER",
                    "value": "ON",
                    "type": "BOOL"
                },
                {
                    "name": "UA_ENABLE_ENCRYPTION",
                    "value": "OPENSSL",
                    "type": "STRING"
                },
                {
                    "name": "UA_ENABLE_ALL_SECURITYPOLICIES",
                    "value": "ON",
                    "type": "BOOL"
                },
                {
                    "name": "OPENSSL_ROOT_DIR",
                    "value": "C:/PROGRA~1/OpenSSL-Win64",
                    "type": "PATH"
                },
                {
                    "name": "OPENSSL_INCLUDE_DIR",
                    "value": "C:/PROGRA~1/OpenSSL-Win64/include",
                    "type": "PATH"
                },
                {
                    "name": "OPENSSL_LIBRARIES",
                    "value": "C:/PROGRA~1/OpenSSL-Win64/lib/libssl.lib;C:/PROGRA~1/OpenSSL-Win64/lib/libcrypto.lib",
                    "type": "STRING"
                },
                {
                    "name": "UA_ENABLE_SUBSCRIPTIONS",
                    "value": "ON",
                    "type": "BOOL"
                },
                {
                    "name": "UA_ENABLE_METHODCALLS",
                    "value": "ON",
                    "type": "BOOL"
                },
                {
                    "name": "UA_ENABLE_ACCESSCONTROL",
                    "value": "ON",
                    "type": "BOOL"
                },
                {
                    "name": "UA_ENABLE_DISCOVERY",
                    "value": "ON",
                    "type": "BOOL"
                },
                {
                    "name": "UA_BUILD_EXAMPLES",
                    "value": "OFF",
                    "type": "BOOL"
                },
                {
                    "name": "UA_BUILD_TOOLS",
                    "value": "OFF",
                    "type": "BOOL"
                }
            ]
        }
    ]
}

2. 关键调整说明

  • 用UA_ENABLE_CLIENTSERVER替代UA_ENABLE_CLIENT和UA_ENABLE_SERVER,适配新版本open62541的选项规则。
  • 添加UA_ENABLE_ALL_SECURITYPOLICIES=ON,确保所有安全策略(包括Basic256Sha256)被编译。如果只想启用特定策略,可查当前open62541版本对应的正确选项名(部分版本用UA_SECURITY_POLICY_BASIC256SHA256)。
  • 明确指定OPENSSL_INCLUDE_DIR和OPENSSL_LIBRARIES,避免CMake自动查找OpenSSL失败。

3. 清理缓存并重新构建

  • 删除out/build/x64-Debug目录下的所有文件,彻底清理CMake缓存。
  • 在Visual Studio中重新生成CMake缓存,等配置完成后重新编译open62541库。

4. 验证构建结果

  • 检查CMake输出日志,确认以下信息:

    Found OpenSSL: C:/PROGRA~1/OpenSSL-Win64/lib/libcrypto.lib (found suitable version "3.6.2", minimum required is "1.1.0")
    Enabled security policy: http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256

  • 用编译后的库重新测试S7-1500端点连接,确认Basic256Sha256策略不再被拒绝。

内容的提问来源于stack exchange,提问作者mortierpeter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.10 11:04:50