Windows下QT Creator中编写.pro文件编译pybind11绑定代码的方法
在Qt Creator(.pro项目)中配置pybind11生成Python可调用模块(Windows)
核心配置思路
要生成Python可导入的扩展模块,Windows下需要输出.pyd格式的共享库,以下是完整的.pro文件配置步骤及代码示例:
1. 基础目标配置
在.pro文件中设置项目为共享库类型,并指定输出后缀为.pyd(Python扩展模块的标准格式):
# 设置为共享库模板 TEMPLATE = lib # 模块名称(需与PYBIND11_MODULE的第一个参数完全一致) TARGET = my_python_ext # 启用共享库编译 CONFIG += shared # 将输出后缀从.dll改为.pyd QMAKE_EXTENSION_SHLIB = pyd
2. 配置Python依赖路径
添加Python的头文件目录和库文件链接,替换为你本地的Python安装路径(注意匹配Python版本和架构):
# Python头文件路径(示例为Python3.10 64位) INCLUDEPATH += C:/Python310/include # Python库文件链接,对应版本的lib文件 LIBS += -LC:/Python310/libs -lpython310
3. 配置pybind11依赖路径
添加pybind11的头文件目录,替换为你本地的pybind11路径:
# pybind11头文件路径(示例为本地下载的pybind11) INCLUDEPATH += C:/pybind11/include
4. 编译选项配置
pybind11需要C11及以上标准,建议指定C17:
# 启用C++17标准 CONFIG += c++17 # 如果项目不需要Qt框架,可关闭Qt依赖(可选) # CONFIG -= qt
示例C++绑定代码
创建main.cpp(或任意源文件),编写pybind11绑定逻辑,注意模块名要和.pro中的TARGET一致:
#include <pybind11/pybind11.h> // 待绑定的C++函数 int add(int a, int b) { return a + b; } // pybind11模块入口,第一个参数需与TARGET完全一致 PYBIND11_MODULE(my_python_ext, m) { m.def("add", &add, "Adds two integers together"); }
编译与使用
- 在Qt Creator中编译项目,输出目录会生成
my_python_ext.pyd文件 - 将该
.pyd文件放到Python脚本的同级目录,或Python的site-packages目录 - 在Python中导入使用:
import my_python_ext print(my_python_ext.add(3, 5)) # 输出8
注意事项
- 架构匹配:Python的架构(32/64位)必须与Qt Creator使用的编译器架构一致,否则无法导入
- 版本匹配:编译模块的Python版本需与运行的Python版本完全一致(如3.10编译的模块不能在3.9中使用)
- Qt依赖处理:如果项目依赖Qt库,需将对应的Qt DLL(如
Qt5Core.dll)与.pyd文件放在同一目录,或配置系统环境变量
内容的提问来源于stack exchange,提问作者sumit kshirsagar
相关产品推荐
相关产品推荐

