Skip to content

MindConnect Library – 针对 Windows 的入门指南

先决条件

  • 已在您的机器上安装**Universal Windows Platform development** 和 Desktop development with C++ 工作量的 Visual Studio 2015。

准备

该章节描述如何安装构建 MindConnect Library 所需的工具和库。

  • Perl
  • CMake 版本 3.5 或更高
  • OpenSSL 版本 1.0.2q 或更高(必须为 1.0.x)
  • libcurl 版本 7.52.1 或最高为7.60.x

信息

这些说明基于 CMake 3.14.4。如果使用 Visual Studio 不同的版本,所需的工具和库的版本也许会有改变。

安装 Perl

  1. http://strawberryperl.com 安装 Strawberry Perl。
  2. 运行安装。
  3. 打开新的命令行窗口并输入以下命令:

    perl –version
    

    输出应该和下图所示一样。

    Perl Version

    信息

    命令行窗口必须在安装*之后*打开。

安装 CMake

  1. https://cmake.org/download/中下载 CMake 版本3.5 或更高版本。
  2. Use the installer and make sure to add CMake to the system PATH. CMake Installer
  3. 打开新的命令行窗口并输入以下命令:

    cmake –-version
    

    输出应该和下图所示一样。

    CMake Version

    信息

    命令行窗口必须在安装*之后*打开。

编译 OpenSSL

  1. https://github.com/openssl/openssl/releases中下载 openssl-1.0.2q.zip (或更高版本)。
  2. 将下载的文件解压到您选择的 {OpenSSL_dir} 文件夹中。
  3. 打开 VS2015 x64 原生工具命令提示符。

    提示

    如果您没有找到这个特别的原生命令提示符,打开 Visual Studio Installer 并确保您已经为 Visual Studio 2015 安装 Visual C++ 功能。

  4. 更改为 {OpenSSL_dir} 并配置编译器以及安装到 OpenSSL 的路径。

    ```cmd tab="Template" cd {OpenSSL_dir} mkdir build perl Configure VC-WIN64A --prefix={OpenSSL_dir}\build\openssl --openssldir={OpenSSL_dir}\build\ssl

    ```cmd tab="Sample Path"
    cd C:\MCL\openssl-OpenSSL_1_0_2q
    mkdir build
    perl Configure VC-WIN64A --prefix=C:\MCL\openssl-OpenSSL_1_0_2q\build\openssl --openssldir=C:\MCL\openssl-OpenSSL_1_0_2q\build\ssl
    

  5. 构建生成文件。

    ms\do_win64a
    
  6. 构建库并将其安装到 --prefix 参数给出的目录中。

    nmake -f ms\ntdll.mak
    nmake -f ms\ntdll.mak install
    

编译 libcurl

  1. https://curl.haxx.se/download/中下载 curl-7.52.1.zip (或更高版本)。
  2. 将下载的文件解压到您选择的 {curl_dir} 文件夹中。
  3. 打开 VS2015 x64 原生工具命令提示符的新窗口。
  4. 准备在 {curl_dir} 中的构建目录并且打开它。

    ```cmd tab="Template" cd {curl_dir} mkdir build cd build

    ```cmd tab="Sample Path"
    cd C:\curl-7.52.1
    mkdir build
    cd build
    

  5. 使用 Visual Studio 2015 目录 {VS_dir},设置到 OpenSSL 的路径和 Visual Studio 2015 环境变量。

    ```cmd tab="Template" set PATH=%PATH%;{OpenSSL_dir}\build\openssl "{VS_dir}\VC\vcvarsall.bat"

    ```cmd tab="Sample Path"
    set PATH=%PATH%;C:\MCL\openssl-OpenSSL_1_0_2q\build\openssl
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
    

  6. 使用 libcurl 目录替换 {curl_dir} 来构建 libcurl。

    cmake .. -G"Visual Studio 14 2015 Win64" -DHTTP_ONLY=ON -DCMAKE_USE_OPENSSL=ON -DCMAKE_INSTALL_PREFIX={curl_dir}\build\install
    cmake --build . --target install --config Release
    

构建 MindConnect Library

  1. 从 SIOS 中下载 MindConnect Library。
  2. 将下载的文件解压到您选择的 {MCL_build_dir} 文件夹中。
  3. 打开 VS2015 x64 原生工具命令提示符的新窗口。
  4. 复制 {curl_dir}\build\install{OpenSSL_dir}\build\openssl 的内容到 {MCL_build_dir}

    cd {MCL_build_dir}
    Xcopy /S {curl_dir}\build\install {MCL_build_dir}\curl\
    Xcopy /S {OpenSSL_dir}\build\openssl {MCL_build_dir}\openssl\
    
  5. 移动文件 libeay32.dllssleay32.dll{MCL_build_dir}\openssl\lib

    move {MCL_build_dir}\openssl\bin\libeay32.dll {MCL_build_dir}\openssl\lib\
    move {MCL_build_dir}\openssl\bin\ssleay32.dll {MCL_build_dir}\openssl\lib\
    
  6. 复制两个移动了的文件到 {MCL_build_dir}\curl\bin\

    Xcopy {MCL_build_dir}\openssl\lib\libeay32.dll {MCL_build_dir}\curl\bin\
    Xcopy {MCL_build_dir}\openssl\lib\ssleay32.dll {MCL_build_dir}\curl\bin\
    
  7. 删除 {MCL_build_dir}\openssl\bin

    rmdir /Q /S {MCL_build_dir}\openssl\bin
    
  8. 在带有以下内容的 {MCL_build_dir} 中创建文件 build_mcl.bat。用提取的 MindConnet Library 文件的文件夹名称替换 {MCL_folder}

    rem Set directory variables
    set MCL_SOURCE_DIR=%~dp0\{MCL_folder}
    set CMAKE_DIR=%~dp0\cmake
    set OPENSSL_DIR=%~dp0\openssl
    set CURL_DIR=%~dp0\curl
    set BUILD_DIR=%~dp0\cmake_vs_build
    rem Create build directory if it doesn't exist
    if not exist %BUILD_DIR% mkdir %BUILD_DIR%
    cd %BUILD_DIR%
    rem Clear build directory content
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
    rem Add to path
    set PATH=%PATH%;%CURL_DIR%;%CMAKE_DIR%;%OPENSSL_DIR%
    rem Generate a Visual Studio solution 
    cmake -G"Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DMCL_STATICLIB=OFF -DMCL_USE_LIBCURL=ON -DMCL_USE_OPENSSL=ON -DMCL_CREATE_DOXYGEN=OFF -DMCL_TESTING=OFF -DMCL_LOG_UTIL_LEVEL=255 %MCL_SOURCE_DIR%
    cmake --build . --target mc
    
  9. 运行批量过程。

    build_mcl.bat
    

    MindConnect Libraries mcl.libmc.dll 以及 OpenSSL 和 libcurl 的副本在 {MCL_build_dir}\cmake_vs_build\build\Release 中创建。

构建自定义代理应用

  1. 打开 MindConnect Library Visual Studio 2015。
  2. 创建名为 CustomAgent 的新解决方案并添加 customAgent.c 到项目中。
  3. 使用 CTRL+ALT+L 打开 isual Studion 2015 的 Solution Explorer。
  4. 在 Solution Explorer 中 右键点击项目名称并选择**属性**。
  5. 设置**配置** 为 "所有配置", **平台**为 "x64"。
  6. C/C++ 配置属性中打开**通用**选项卡。
  7. 将提取的 MindConnect Library 文件夹的 include 目录添加到 Additional Include Directories
  8. 在**链接器**配置属性中打开**通用**选项卡。
  9. 将提取的 MindConnect Library 文件夹的 lib 目录添加到 Additional Library Directories
  10. 在**连接器**配置属性中打开**输入**选项卡。
  11. 添加 mc.libAdditional Dependencies
  12. 复制 MindConnect Library Release 文件夹中的文件 libcurl.dlllibeay32.dllssleay32.dllmc.dll 到带有自定义代理执行文件的目录。
  13. 构建解决方案。

用自定义实现替换 MindConnect Library 模块

下表列出 MindConnect Library 项目的模块,这些模块可以用自定义实现替换:

模块 描述
memory.h 实现与内存相关的函数。如果没有另外指定,使用标准库中的 alloccallocreallocfree
random.h 使用标准库中的随机生成器。
security.h 提供几个函数,这些函数实现从 OpenSSL 的密码库生成例如 SHA256、MD5、RSA 密钥等计算。
http_client.h 使用 libcurl 发送到 MindSphere 的 HTTP 请求。自定义实现必须满足与 TLS v1.2 相关的相同安全需求。MindSphere 的证书必须在 SSL 握手过程中经过验证。

要替换模块,保持原始 *.h 文件并用相同名称替换该实现文件 *.c


Last update: February 23, 2024