如何在Windows下使用PyQt(和sip)编译(和链接)python模块

如何在Windows下使用PyQt(和sip)编译(和链接)python模块,第1张

概述如何在Windows下使用PyQt(和sip)编译(和链接)python模块

我有一个使用Qt5(也编译Qt4)的C ++项目,我想在python中使用(最好是3.4)。 为了做到这一点,我使用PyQt4(由于QtXml模块,据我所知,不再在PyQt5中可用)和啜饮。 这一切都完美地在我的linux机器上。 但不幸的是,我需要它的windows,并不能得到它运行。 我到目前为止所做的:

没有Qt或其他依赖关系的一个非常小的例子(一个函数返回一个整数)的作品。 即使使用gcc。 但是在我的项目中出现“错误的reloc”错误后,我切换到了MSVC

我的python 3.4是用“win32上的”MSC v.1600 32位(Intel)“”构build的,所以根据什么版本的Visual Studio是我的电脑上编译的Python? 我下载了Qt 5.2.1 MSVC 2010和Microsoft Visual Studio Express 2010 SP1

我假定预编译的PyQt4-4.11.2-gpl-Py3.4-Qt5.3.1-x32应该适合

为了得到sip.h和sipconfig.py文件,我编译了sip(4.16.3)。

从现在开始,我不确定要做什么。 我不得不承认,我对图书馆不了解。

C ++ / Qt项目是用QtCreator和CONfig += staticlib和TEMPLATE = lib编译的。 产生的* .lib(这里是:xml2db.lib)被复制到我的sip文件所在的文件夹(例如sipxml2dbcmodule.cpp)

所以通过“VS命令提示符”nmake会引发致命(链接)错误。 我不确定所需的编译器标志应该是什么,或者如果staticlib是错误的。 我的标志是:

LFLAGS = /NOlogo /DYNAMICBASE /NXCOMPAT /DLL /MANIFEST /MANIFESTfile:$(TARGET).manifest /SUBSYstem:windows /INCREMENTAL:NO /NODEFAulTliB:library /liBPATH:/liBPATH:C:Qt5.2.1msvc2010lib liBS = /liBPATH:C:python34libs python34.lib xml2db.lib /liBPATH:C:Qt5.2.1msvc2010libQt5Xmld.lib C:Qt5.2.1msvc2010libQt5sqld.lib C:Qt5.2.1msvc2010libQt5Cored.lib $(TARGET): $(OfileS) $(link) $(LFLAGS) /OUT:$(TARGET) $(OfileS) $(liBS)

目标是“myTools.pyd”。 它导致

如何从左到右移动入侵者

windows 10不能在Composer中使用适用于PHP v3的AWS开发工具包

如何标记删除文件夹C#

打开对话框可以防止windowsclosures

有效字幕文本颜色 – 检测变化(在.Net中)

sipmyToolscmodule.cpp sipmyToolsxml2db.cpp Generating Code... link /NOlogo /DYNAMICBASE /NXCOMPAT /DLL /MANIFEST /MANIFESTfile:myTools .pyd.manifest /SUBSYstem:windows /INCREMENTAL:NO /NODEFAulTliB:library /liBPATH: C:Qt5.2.1msvc2010lib /OUT:myTools.pyd sipmyToolscmodule.obj sipmyToolsxml2db .obj /liBPATH:C:python34libs python34.lib xml2db.lib /liBPATH:C:Qt5.2.1msvc 2010libQt5Xmld.lib C:Qt5.2.1msvc2010libQt5sqld.lib C:Qt5.2.1msvc2010l ibQt5Cored.lib xml2db.lib(xml2db.obj) : error LNK2038: mismatch detected for '_IteraTOR_DEBUG_L EVEL': value '2' doesn't match value '0' in sipmyToolscmodule.obj MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_i nfo(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in liB CMT.lib(typinfo.obj) MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in liBCMT.lib(typinfo.obj) Creating library myTools.lib and object myTools.exp link : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; u se /NODEFAulTliB:library myTools.pyd : Fatal error LNK1169: one or more multiply defined symbols found NMAKE : Fatal error U1077: '"C:Program files (x86)Microsoft Visual Studio 10.0 VCBINlink.EXE"' : return code '0x491' Stop.

我会很高兴的回答或新的想法。 提前致谢。

编辑我不知道我是如何解决它,但这里有一些更多的提示,帮助我解决它。

由于SIP 5不会有build立系统,我试图创build一个QMAKE项目。 为此,我下载了pyqt源码包,查看了项目文件并根据需要进行了调整。

特别是当您更改qmake项目文件时,删除make,object和/或moc文件可能非常有用。

qt版本应该与pyqt版本完全匹配(实际上,我不是指版本本身,而是编译的qt版本)

祝你有个相似的问题

haskell – 制作windows dll库 – segfault

在UNIX中replace换行符

终止在C#中运行消息循环的工作线程

在windows中结构自动login

Java – 如何将pdf打印到特定的打印机?

总结

以上是内存溢出为你收集整理的如何在Windows下使用PyQt(和sip)编译(和链接)python模块全部内容,希望文章能够帮你解决如何在Windows下使用PyQt(和sip)编译(和链接)python模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1154698.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存