从PySide一换成shiboken就开始关注它,可是由于对python的C调用不熟,对cmake构建系统不熟,从尝试了解shiboken到现在已经10个月过去了,还是一直没什么进展。但必须学习并整理一下了:
什么是Shiboken
Setanta 解释说:Shiboken是一个为C/C++库生成CPython绑定代码的生成器,除此之外,没有任何附加的含义。
原文如下:
- Before going on with this, allow me to explain that Shiboken means absolutely nothing. Not buddhist void, I just mean that the word Shiboken has no meaning attached to it. Except, of course, “generator of CPython based binding code for C/C++ libraries”.
文档的第一行是这么告诉的我们:Shiboken 是 Generator Runner 的一个插件(前端),它使用CPython代码为C++库生成绑定。
原文如下:
- Shiboken is a plugin (front-end) for Generator Runner. It generates bindings for C++ libraries using CPython source code.
为了了解Shiboken,我们需要先看看 Generator Runner:
Generator Runner
-
GeneratorRunner 是为了便于为C++和Qt的库开发语言绑定而创建的一个工具。
- 它提供了一个框架来使得这个过程能够最大可能地自动化:
- 使用ApiExtractor提来提取C++头文件中的信息
- 通过相应的前端(用户可以自己提供)来生成某种目标语言的绑定

要想为生成C++库生成绑定,我们需要
从C++库的头文件中提取信息
|
ApiExtractor
|
控制提取(修改、重命名)哪些信息
|
通过 typesystem 文件
|
信息提取之后,我们理论上可以为各种高层的语言提供绑定(只要有相应的前端存在)。
为CPython生成绑定
|
shiboken
|
为要绑定的库生成文档
|
DocGenerator
|
为... 生成绑定
|
...
|
Generator Runner 本身比较简单,它的工作都是通过ApiExtractor和前端(比如此处的Shiboken) 来完成的。
generatorrunner --generator-set=shiboken
再看Shiboken
当编译或安装Shiboken时,我们会注意到和shiboken名字相关的有3个文件:
shiboken_generator(.dll/.so/...)
|
这个就是前面一直在提的插件(前端)
|
shiboken-python*(.dll/.so/...)
|
最终生成的代码需要依赖这个来运行
|
shiboken(.exe)
|
这只是一个外壳,就是generatorrunner--generator-set=shiboken
|
插件位置
:
- 在命令行的 --generator-set 中我们可以指定插件的全路径。
- 如果不是全路径(比如指定shiboken),generatorrunner 先合成文件名(shiboken_generator.dll),再去以下路径搜索
- 编译时指定的插件目录
- QCoreApplication::libraryPaths()返回的路径
参考
分享到:
相关推荐
shiboken6.abi3.dll文件
pip install shiboken2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win_amd64.whl pip install PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win_amd64.whl 或者 pip install shiboken2...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
shiboken25.15.2.15.15.2cp35.cp36.cp37.cp38.cp39.cp311nonewin_amd64.whl
pysides 在线下载较慢,共享 需要安装shiboken6 python -m pip install shiboken6==shiboken6-6.2.3
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
这个压缩包提供了一个实际的案例,对于学习如何将C++库集成到Python应用中是非常有价值的。它可以帮助开发者理解Shiboken和PySide的工作原理,提升跨语言编程的能力。通过深入研究这个示例,不仅可以掌握C++到Python...
总之,"makelib2.rar"提供的内容涵盖了C++、Qt库、Shiboken、PySide和Python的结合使用,对于希望在Python中利用Qt界面的开发者来说是一份宝贵的学习资料。通过这个项目,你可以了解和实践如何在Python中无缝地调用...
相同的setup.py脚本用于构建项目的所有组件: shiboken6(支持的Python模块) shiboken6-generator(绑定生成可执行文件) PySide6 最好使用Qt(构建)环境来自动选择关联的qmake ,但可选地,如果qmake和cmake不在...
用于QtRPT的Pyside QtRPT Python绑定(PySide Shiboken)QtRPT报告引擎Python报告许可证与QtRPT兼容的LGPL3(请参阅许可证)“”“ QtRPT是用C ++ QtToolkit编写的易于使用的打印报告引擎。它允许将多个报告合并为一...
适用于linux系统(ubuntu)等,架构aarch64,直接使用Pyside2 代替Qt,做项目时候直接安装编译好的文件即可,先安装shiboken的两个文件,最后安装Pyside2. 一般Qt的安装很不容易安装成功,尤其是对于ubuntu系统,...
适用于linux系统(ubuntu)等,架构aarch64,直接使用Pyside2 代替Qt,做项目时候直接安装编译好的文件即可,先安装shiboken的两个文件,最后安装Pyside2. 一般Qt的安装很不容易安装成功,尤其是对于ubuntu系统,...
2. **PyQt/PySide集成**:在Python中,开发者会使用`uic`模块(对于PyQt)或`shiboken2`和`PyQt5.QtWidgets`(对于PySide)来加载.ui文件,并将其转换为可执行的Python类。这样,可以在Python脚本中实例化这些类,...
适用于linux系统(ubuntu)等,架构aarch64,直接使用Pyside2 代替Qt,做项目时候直接安装编译好的文件即可,先安装shiboken的两个文件,最后安装Pyside2. 一般Qt的安装很不容易安装成功,尤其是对于ubuntu系统,...
PyQt5-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win_amd64.whl
PyQt5-5.12.1-5.12.2-cp35.cp36.cp37.cp38-none-win_amd64.whl
Qt对于Python Qt For Python是,可访问完整的Qt 5.x框架以及用于快速生成任何C ++库绑定的生成器工具。... shiboken2是用于构建绑定的生成器。 有关详细信息,请参见README.pyside2.md和README.shiboken2.md。
PySide QtSerialPort绑定Shiboken LGPL3 QtSerialPort是Qt的正式组成部分(http://www.qt.io)。 信息链接:http://wiki.qt.io/QtSerialPort
适用于Python的Qt Qt for Python提供了Qt的官方Python绑定,并具有两个主要组件: PySide6,以便您可以在Python应用程序中使用Qt6 API,还可以使用Shiboken6(一个绑定生成器工具,可以将C ++项目暴露给Python),...