logo
0
0
WeChat Login

ShiplyCppSDK 构建说明

概述

本项目支持生成 x86 和 x64 架构的 Visual Studio 解决方案,并自动配置对应的库文件依赖。重要:确保 demo 项目与 shiply.dll 使用相同的运行时库类型!

运行时库配置

为什么需要匹配运行时库?

如果 demo 项目与 shiply.dll 使用不同的运行时库类型,会导致以下问题:

  • 运行时错误(如 "应用程序无法正常启动")
  • 内存分配/释放不匹配
  • 异常处理问题
  • 其他难以调试的运行时问题

运行时库类型

  1. 动态运行时库 (MD/MDD)

    • Debug: MultiThreadedDebugDLL (MDD)
    • Release: MultiThreadedDLL (MD)
    • 依赖外部 DLL:MSVCP140.dll, VCRUNTIME140.dll
  2. 静态运行时库 (MT/MTD)

    • Debug: MultiThreadedDebug (MTD)
    • Release: MultiThreaded (MT)
    • 不依赖外部 DLL,运行时库代码直接链接到可执行文件

如何确定 shiply.dll 的运行时库类型

方法一:使用检测工具(推荐)

# 运行检测工具 .\check_runtime.bat

方法二:手动检查

# 使用 dumpbin 工具检查依赖项 dumpbin /dependents libs\x64_Release\shiply.dll | findstr "MSVCP\|VCRUNTIME"
  • 如果输出包含 MSVCP140.dllVCRUNTIME140.dll → 使用动态运行时库 (MD/MDD)
  • 如果输出不包含这些 DLL → 使用静态运行时库 (MT/MTD)

目录结构

libs/ ├── include/ # 头文件目录 ├── x64_Debug/ # x64 Debug 配置库文件 │ ├── shiply.dll │ ├── shiply.lib │ └── shiply.pdb ├── x64_Release/ # x64 Release 配置库文件 │ ├── shiply.dll │ ├── shiply.lib │ └── shiply.pdb ├── x86_Debug/ # x86 Debug 配置库文件 │ ├── shiply.dll │ ├── shiply.lib │ └── shiply.pdb └── x86_Release/ # x86 Release 配置库文件 ├── shiply.dll ├── shiply.lib └── shiply.pdb

生成解决方案

方法一:使用批处理脚本(推荐)

  1. 首先检测运行时库类型

    .\check_runtime.bat
  2. 生成解决方案

    .\generate_sln.bat
  3. 选择运行时库配置

    • 选项 1: 动态运行时库 (MD/MDD) - 如果 shiply.dll 使用 MultiThreadedDLL 编译
    • 选项 2: 静态运行时库 (MT/MTD) - 如果 shiply.dll 使用 MultiThreaded 编译
  4. 脚本会自动生成以下解决方案:

    • build/x64/shiply_demo.sln - x64 架构解决方案
    • build/x86/shiply_demo.sln - x86 架构解决方案

每个解决方案都包含 Debug 和 Release 配置。

方法二:手动使用 CMake

生成 x64 解决方案(动态运行时库)

mkdir build_x64 cd build_x64 cmake -G "Visual Studio 17 2022" -A x64 .. -DARCHITECTURE=x64 -DUSE_STATIC_RUNTIME=OFF

生成 x64 解决方案(静态运行时库)

mkdir build_x64 cd build_x64 cmake -G "Visual Studio 17 2022" -A x64 .. -DARCHITECTURE=x64 -DUSE_STATIC_RUNTIME=ON

生成 x86 解决方案(动态运行时库)

mkdir build_x86 cd build_x86 cmake -G "Visual Studio 17 2022" -A Win32 .. -DARCHITECTURE=x86 -DUSE_STATIC_RUNTIME=OFF

生成 x86 解决方案(静态运行时库)

mkdir build_x86 cd build_x86 cmake -G "Visual Studio 17 2022" -A Win32 .. -DARCHITECTURE=x86 -DUSE_STATIC_RUNTIME=ON

配置说明

架构支持

  • x64: 64位架构,使用 libs/x64_Debug/libs/x64_Release/ 目录下的库文件
  • x86: 32位架构,使用 libs/x86_Debug/libs/x86_Release/ 目录下的库文件

构建配置

  • Debug: 调试版本,使用 Debug 目录下的库文件
  • Release: 发布版本,使用 Release 目录下的库文件

运行时库配置

  • USE_STATIC_RUNTIME=OFF: 使用动态运行时库 (MD/MDD)
  • USE_STATIC_RUNTIME=ON: 使用静态运行时库 (MT/MTD)

自动库文件检测

CMakeLists.txt 会自动检测以下库文件是否存在:

  • shiply.lib - 主要库文件(必需)

DLL 文件复制

构建完成后,以下 DLL 文件会自动复制到输出目录:

  • shiply.dll - 主要动态库(必需)

注意事项

  1. 重要: 确保 demo 项目与 shiply.dll 使用相同的运行时库类型
  2. 确保 libs 目录下包含对应架构和配置的库文件
  3. 必需的文件(shiply.lib 和 shiply.dll)如果不存在会导致构建失败
  4. 生成的解决方案支持在 Visual Studio 中直接切换 Debug/Release 配置
  5. 如果遇到运行时错误,首先检查运行时库类型是否匹配

故障排除

常见问题

  1. 运行时错误 "应用程序无法正常启动"

    • 检查 demo 项目与 shiply.dll 的运行时库类型是否匹配
    • 运行 check_runtime.bat 确认 DLL 的运行时库类型
    • 重新生成解决方案,选择正确的运行时库配置
  2. 库文件未找到错误

    • 检查 libs 目录下是否有对应架构和配置的库文件
    • 确认文件名和路径是否正确
  3. DLL 文件缺失

    • 确保所有必需的 DLL 文件都在对应的库目录中
    • 检查 DLL 文件是否与目标架构匹配
  4. CMake 配置错误

    • 确保安装了 Visual Studio 2022
    • 检查 CMake 版本是否满足要求(3.13+)
  5. dumpbin 工具未找到

    • 确保已安装 Visual Studio 或 Windows SDK
    • 将 Visual Studio 的 bin 目录添加到 PATH 环境变量

调试信息

运行脚本时会显示详细的配置信息:

  • 目标架构
  • 构建配置
  • 运行时库类型
  • 库文件目录
  • 找到的库文件和 DLL 文件

运行时库类型检测

如果无法使用 check_runtime.bat,可以手动检测:

  1. 使用 Dependency Walker 工具
  2. 使用 Visual Studio 的 dumpbin 工具
  3. 查看 DLL 文件的导入表

常见错误及解决方案

错误现象可能原因解决方案
应用程序无法正常启动运行时库不匹配重新生成解决方案,选择正确的运行时库类型
链接错误 LNK2038运行时库不匹配检查项目设置中的运行时库配置
内存分配错误运行时库不匹配确保所有组件使用相同的运行时库
DLL 加载失败缺少依赖 DLL检查是否缺少 MSVCP140.dll 等运行时库 DLL

配置说明

DLL 文件复制

构建完成后,以下 DLL 文件会自动复制到输出目录:

  • shiply.dll - 主要动态库(必需)

注意事项

  1. 确保 libs 目录下包含对应架构和配置的库文件
  2. 如果某些可选库文件不存在,构建过程会继续,但会显示警告信息
  3. 必需的文件(shiply.lib 和 shiply.dll)如果不存在会导致构建失败
  4. 生成的解决方案支持在 Visual Studio 中直接切换 Debug/Release 配置

故障排除

常见问题

  1. 库文件未找到错误

    • 检查 libs 目录下是否有对应架构和配置的库文件
    • 确认文件名和路径是否正确
  2. DLL 文件缺失

    • 确保所有必需的 DLL 文件都在对应的库目录中
    • 检查 DLL 文件是否与目标架构匹配
  3. CMake 配置错误

    • 确保安装了 Visual Studio 2022
    • 检查 CMake 版本是否满足要求(3.13+)

调试信息

运行 generate_sln.bat 时会显示详细的配置信息:

  • 目标架构
  • 构建配置
  • 库文件目录
  • 找到的库文件和 DLL 文件

About

No description, topics, or website provided.
Language
C67.9%
C++19.2%
CMake5.3%
Others7.6%