VS2015编译PythonQt库


前言

记录自己如何使用PythonQt。

1.新建一个QWidget项目

文件->新建->项目,其他自己命名即可。
![(https://img-blog.csdnimg.cn/20201124152856536.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ0NTExNg==,size_16,color_FFFFFF,t_70#pic_center)
解决方案资源管理器


2.设置环境变量

如图,

在这里插入图片描述

3.项目设置

把PythonQt的src目录完整复制到MyPythonQtTest项目路径中。
在这里插入图片描述

右键项目->属性,打开C/C++。
附加包含目录的值如下

D:\git\test\PythonQt3.2\extensions\PythonQt_QtAll;$(Qt_INCLUDEPATH_);%(AdditionalIncludeDirectories);
D:\VS2015Workspace\MyPythonQtTest\src;
.;
D:\python27_32/PC;
D:\python27_32\include;
E:\QT5.9.9\5.9.9\msvc2015\include;E:\QT5.9.9\5.9.9\msvc2015\include\QtOpenGL;
E:\QT5.9.9\5.9.9\msvc2015\include\QtWidgets;E:\QT5.9.9\5.9.9\msvc2015\include\QtGui;E:\QT5.9.9\5.9.9\msvc2015\include\QtANGLE;E:\QT5.9.9\5.9.9\msvc2015\include\QtTest;
E:\QT5.9.9\5.9.9\msvc2015\include\QtCore;release;E:\QT5.9.9\5.9.9\msvc2015\mkspecs\win32-msvc

然后打开链接器,设置附加库目录
在这里插入图片描述
值为

$(Qt_LIBPATH_);%(AdditionalLibraryDirectories);
E:\QT5.9.9\5.9.9\msvc2015\lib;
D:\git\test\PythonQt3.2\lib

注意这里的D:\git\test\PythonQt3.2\lib是我的PythonQt编译成功后生成的lib目录,所以根据自己的实际情况修改。

点击链接器->输入,附加依赖项中的值为

D:\python27_32\libs\python27.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\qtmain.lib;
D:\git\test\PythonQt3.2\lib\PythonQt-Qt5-Python27.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5OpenGL.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Widgets.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Gui.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Test.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Core.lib;%(AdditionalDependencies)

在常规中可以设置输出目录和输出文件名,以确定生成的exe所在目录。

4.编写代码

在Resource files中添加现有项,将PythonQt3.2\examples\PyGuiExample目录下的example.py添加进来。
然后在main.cpp中编写代码


#include "PythonQt.h"
//#include "PythonQt_QtAll.h"
#include "gui/PythonQtScriptingConsole.h"

#include <QApplication>
#include <QWidget>
#include <QMainWindow>
#include <QPushButton>
#include <QLayout>

int main(int argc, char **argv)
{
	QApplication qapp(argc, argv);

	PythonQt::init(PythonQt::IgnoreSiteModule | PythonQt::RedirectStdOut);
	//PythonQt_QtAll::init();

	PythonQtObjectPtr  mainContext = PythonQt::self()->getMainModule();
	PythonQtScriptingConsole console(NULL, mainContext);

	// 调用Python脚本,这是一个窗口
	mainContext.evalFile(":example.py");

	console.show();
	return qapp.exec();
}

5.生成

右键项目生成,然后lib目录下出现exe(我设置的输出目录为…\lib,输出文件名字为MyPythonQtTest)。
在这里插入图片描述
这是直接点击运行exe是不行的,将pythonQt生成的dll文件放在目录下就可以了。
在这里插入图片描述
运行效果如图
在这里插入图片描述

总结

lib提供符号表,dll提供具体代码,dll是动态库,在运行时调用。

posted @ 2023-06-07 21:02  强里秋千墙外道  阅读(62)  评论(0)    收藏  举报  来源