You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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");
}

编译与使用

  1. 在Qt Creator中编译项目,输出目录会生成my_python_ext.pyd文件
  2. 将该.pyd文件放到Python脚本的同级目录,或Python的site-packages目录
  3. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:43:29