[英]PySide DLL loading conflict within a C++ / Qt application
我有一个使用Qt 4.x的Core,GUI和Network模块的C ++应用程序。 当用户执行某些操作时,它将调用python回调,这一点是用户可以通过编写python代码来自定义这些回调。
当我尝试从PySide像这样的回调中导入QtNetwork模块时:
from PySide import QtNetwork
我收到以下错误 :
dll load failed : the specified procedure could not be found
请注意,导入QtCore和QtGui模块时不会出现错误。
我使用了依赖项遍历器来尝试找出问题所在。
当应用程序启动时,它将加载QtCore4.dll
, QtGui4.dll
和QtNetwork4.dll
,它们是放置在我的应用程序目录中的C ++ Qt DLL 。
当我触发从PySide导入QtNetwork的python代码的回调时,它将加载QtNetwork.pyd
,然后出现错误:
LoadLibraryExA("C:\\Dev\\Python27\\lib\\site-packages\\PySide\\QtNetwork.pyd", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: the specified procedure could not be found (127).
我的QtNetwork.pyd
依赖树: 似乎表明它使用了已经加载的C ++ DLL而不是PySide DLL 。 我猜这是因为它们的名称相同。
有没有办法使其加载正确的DLL( c:\\dev\\python27\\lib\\site_package\\pyside\\
目录中的c:\\dev\\python27\\lib\\site_package\\pyside\\
)?
此外,为什么这种冲突与QtCore和QtGui无关紧要?
首先,检查您的QTNETWORK4.DLL
满足要求:
最好的方法是将所需的库从Qt的bin
目录复制到构建目录。
因此,我认为此冲突仅与QTNETWORK4.DLL
因为此lib具有其他版本(不满足上述要求)。
使其加载DLL的正确的方法是添加到您的path
到你的Qt环境变量路径bin
从程序目录中的目录,并删除DLL的-因此,它可以找到所需的库path
。
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.