我的机器上有一个有趣的问题 Windows 7 x64,使用QT 5.2进行GUI
我无法启动应用程序我总是收到错误
首先我认为我有一个破坏的dll,所以通过一些试验和错误我找到了一个解决方案: 我通过环境路径添加QT5Core.dll,而不是直接添加到app文件夹。然后程序工作。如果我将dll复制回应用程序文件夹,与以前一样的问题!?!?!?1
我真的很困惑,因为错误只发生在我的机器上? 调试并没有真正帮助, 在代码中,此处发生错误:
MyApplication::MYApplication(int argc, char** argv, int version)
: QApplication(argc, argv, version) // <<< this call fails!
{ }
有人可以帮帮我吗?
为什么qt5core.dll的位置有问题?!?!?
更新
我使用了depends的profiling函数,发现了以下行为: 的失败
从&gt;调用的GetProcAddress(0x76800000 [c:\ windows \ syswow64 \ KERNEL32.DLL],“CreateSymbolicLinkW”)地址为0x00FF2877的“dirone \ xxxx.EXE”并返回0x7688CCE9。 第一次机会异常0xE06D7363(Microsoft C ++ Exception)发生在地址0x765CC41F的“c:\ windows \ syswow64 \ KERNELBASE.DLL”中。 例外:“分配不好”
工作
LoadLibraryW(“C:\ BuildPackages \ QT \ plugins \ platforms \ qwindows.dll”)从地址0x66AA5154的“dirtwo \ QT5CORE.DLL”调用。 在地址加载“c:\ buildpackages \ qt \ plugins \ platforms \ QWINDOWS.DLL” 0x0F380000。成功挂钩模块。
以某种方式将qwindows.dll的路径硬编码到dll中(此目录没有环境路径) 如果我重命名qwindows.dll或删除它,启动会再次失败。
但qwindows.dll与我们的产品是bundeld。它位于子目录./platforms/ 和文件是相同的(差异返回相等)
有人知道我接下来应该尝试什么?
答案 0 :(得分:2)
检查您是否已经有一些与qt相关的环境变量。 崩溃通常是由于此,首先删除那些环境变量。检查是否有任何其他qt安装库。 如果你能发布cal堆栈会更好。
答案 1 :(得分:0)
需要一些其他dll驻留在qt5core.dll的目录中。将此路径添加到搜索路径时,将找到dll。当您只是复制DLL时,无法找到这些dll。您可以使用depends工具检查依赖关系。
其他dll的候选人是:
icuin51.dll和icuuc51.dll
答案 2 :(得分:0)
发现问题: 环境变量:
QT_QPA_PLATFORM_PLUGIN_PATH=C:\BuildPackages\QT\plugins\platforms
设置为路径。如果删除此变量,一切正常!