
我有一个使用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模块所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)