本项目支持生成 x86 和 x64 架构的 Visual Studio 解决方案,并自动配置对应的库文件依赖。重要:确保 demo 项目与 shiply.dll 使用相同的运行时库类型!
如果 demo 项目与 shiply.dll 使用不同的运行时库类型,会导致以下问题:
动态运行时库 (MD/MDD)
静态运行时库 (MT/MTD)
# 运行检测工具 .\check_runtime.bat
# 使用 dumpbin 工具检查依赖项 dumpbin /dependents libs\x64_Release\shiply.dll | findstr "MSVCP\|VCRUNTIME"
MSVCP140.dll 或 VCRUNTIME140.dll → 使用动态运行时库 (MD/MDD)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
首先检测运行时库类型
.\check_runtime.bat
生成解决方案
.\generate_sln.bat
选择运行时库配置
脚本会自动生成以下解决方案:
build/x64/shiply_demo.sln - x64 架构解决方案build/x86/shiply_demo.sln - x86 架构解决方案每个解决方案都包含 Debug 和 Release 配置。
mkdir build_x64
cd build_x64
cmake -G "Visual Studio 17 2022" -A x64 .. -DARCHITECTURE=x64 -DUSE_STATIC_RUNTIME=OFF
mkdir build_x64
cd build_x64
cmake -G "Visual Studio 17 2022" -A x64 .. -DARCHITECTURE=x64 -DUSE_STATIC_RUNTIME=ON
mkdir build_x86
cd build_x86
cmake -G "Visual Studio 17 2022" -A Win32 .. -DARCHITECTURE=x86 -DUSE_STATIC_RUNTIME=OFF
mkdir build_x86
cd build_x86
cmake -G "Visual Studio 17 2022" -A Win32 .. -DARCHITECTURE=x86 -DUSE_STATIC_RUNTIME=ON
libs/x64_Debug/ 或 libs/x64_Release/ 目录下的库文件libs/x86_Debug/ 或 libs/x86_Release/ 目录下的库文件CMakeLists.txt 会自动检测以下库文件是否存在:
shiply.lib - 主要库文件(必需)构建完成后,以下 DLL 文件会自动复制到输出目录:
shiply.dll - 主要动态库(必需)libs 目录下包含对应架构和配置的库文件运行时错误 "应用程序无法正常启动"
check_runtime.bat 确认 DLL 的运行时库类型库文件未找到错误
libs 目录下是否有对应架构和配置的库文件DLL 文件缺失
CMake 配置错误
dumpbin 工具未找到
运行脚本时会显示详细的配置信息:
如果无法使用 check_runtime.bat,可以手动检测:
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 应用程序无法正常启动 | 运行时库不匹配 | 重新生成解决方案,选择正确的运行时库类型 |
| 链接错误 LNK2038 | 运行时库不匹配 | 检查项目设置中的运行时库配置 |
| 内存分配错误 | 运行时库不匹配 | 确保所有组件使用相同的运行时库 |
| DLL 加载失败 | 缺少依赖 DLL | 检查是否缺少 MSVCP140.dll 等运行时库 DLL |
构建完成后,以下 DLL 文件会自动复制到输出目录:
shiply.dll - 主要动态库(必需)libs 目录下包含对应架构和配置的库文件库文件未找到错误
libs 目录下是否有对应架构和配置的库文件DLL 文件缺失
CMake 配置错误
运行 generate_sln.bat 时会显示详细的配置信息: