OpenPose Python编译报错sszie_t未定义及运行库缺失问题求助
问题分析与解决方案
编译阶段:解决ssize_t未定义错误
- 不要手动修改pybind11的
numpy.h文件,这种临时修改会破坏库的兼容性,导致后续运行时链接异常。 - 问题根源:VS2022默认不定义
ssize_t,且CMake自动生成的pybind11_cpp_standard配置未匹配当前环境的C++标准。 - 正确操作:
- 清空build目录,重新创建。
- 打开CMake-GUI,选择OpenPose源码目录和新的build目录,点击Configure,选择
Visual Studio 2022 17 Win64。 - 勾选
BUILD_PYTHON选项后,找到pybind11_cpp_standard设置项,将其值改为17(匹配VS2022的默认C++标准)。 - 再次点击Configure,直到所有红色配置项消失,再点击Generate生成项目。
- 打开VS2022,以Release模式重新编译整个解决方案。
运行阶段:解决OpenPose库找不到错误
编译成功后,运行Python脚本出现库找不到的问题,按以下步骤处理:
- 找到OpenPose build目录下的
bin/Release文件夹(例如openpose/build/bin/Release),将该路径添加到系统环境变量PATH中,添加后重启命令行/IDE。 - 或者,将
bin/Release目录下的所有.dll文件(包括openpose.dll、pyopenpose.dll等)复制到Python示例脚本的同级目录。 - 确保Python脚本的运行路径正确,不要随意移动脚本位置,保持和编译生成的Python绑定文件路径对应。
额外检查项
- 确认VS2022已安装完整的C++桌面开发组件:包括MSVC v143工具集、Windows 10 SDK(版本10.0.19041及以上)、C++ CMake工具。
- 检查CUDA 12.1是否正确配置:确保VS2022能识别CUDA工具链,CMake配置时
CUDA_TOOLKIT_ROOT_DIR指向正确的CUDA安装路径。 - 避免使用Anaconda虚拟环境中的pybind11:CMake会自动下载OpenPose依赖的pybind11子模块,无需手动安装,删除虚拟环境中手动安装的pybind11,让CMake使用仓库自带的子模块版本。
内容的提问来源于stack exchange,提问作者Axel Park
相关产品推荐
相关产品推荐

