【问题标题】:Windows 11/MinGW 64-Bit: QT-Application not starting from "C:/Program Files" but from anywhere elseWindows 11/MinGW 64 位:QT 应用程序不是从“C:/Program Files”开始而是从其他任何地方开始
【发布时间】:2022-01-27 02:24:57
【问题描述】:

我已经使用工具链将 Qt 5.12.12 应用程序从 Linux 移植到 Windows 11:QtCreator、MinGW 7.30、amd64、C++。到目前为止,一切正常,除非我将应用程序(通过 Inno Setup Studio 安装程序,包括所有使用的 *.dll 文件)部署到“程序文件”。

当程序(名为“orange”)驻留在C:/Program Files/ORANGE/orange.exe 中时,它将永远不会启动,除非“以管理员身份运行”。当我将确切的文件夹 C:/Program Files/ORANGE 重命名为 C:/ORANGE 时,没有“管理员权限”一切正常;该应用程序运行完美。在D:/ 驱动器上的任何文件夹上都相同。

C:/Program Files/ORANGE/orange.exe 开始时,程序会静默失败,但在 Windows 事件日志中,我可以在“计算机管理->系统工具->事件查看器->自定义视图->管理事件”中看到类似的条目: 错误应用程序名称:orange.exe,版本:1.1.0.0,时间戳:0x61ca2b05 错误模块名称:libgcc_s_seh-1.dll,版本:0.0.0.0,时间戳:0x00000000 异常代码:0x40000015 故障偏移:0x000000000000d125 错误进程ID:0x5b90 错误应用程序启动时间:0x01d7fb68b04bbb8e 错误的应用程序路径:C:\Program Files\ORANGE\orange.exe 错误模块路径:C:\Program Files\ORANGE\libgcc_s_seh-1.dll 报告 ID:3ccd12e6-cfd5-4cff-8d1b-c5450716a821 故障包全名: 错误的包相关应用程序 ID:

我通常不是 Windows 开发人员,因此非常感谢任何有关如何进一步调试或解决此问题的帮助。

【问题讨论】:

  • 这听起来很奇怪,我不确定发生了什么。我想我会开始检查哪些用户/组对该文件具有执行权限(将其授予Everyone),然后我会尝试禁用 Windows Defender 实时保护。
  • 路径中的空格会怎样? c:\ora nge呢?
  • C:\Program Files 受 UAC 保护。您的程序是否尝试将任何文件写入与可执行文件相同的位置?
  • @drescherjm:你说得对——程序试图将日志文件写入其工作目录。 Windows应该对失败的原因多说几句……

标签: c++ windows qt mingw


【解决方案1】:

事实证明@drescherjm 做对了:我的应用确实尝试将日志文件写入它自己的工作目录(这在我之前的 Linux 设置中很好)。将日志位置移动到%appdata%(即QStandardPaths::writableLocation(QStandardPaths::AppDataLocation))确实解决了问题。

...当我使用 boost::log 时,我被错误日志中对libgcc_s_seh-1.dll 的引用误导了。提醒我改进/审查日志清晰度;)

感谢大家的帮助!

【讨论】:

    【解决方案2】:

    您好,找出这是权限错误还是依赖问题(或两者都有:)的最佳方法是下载依赖遍历器https://www.dependencywalker.com/ 并在 .exe 文件上运行它。 在您的情况下,它似乎在您的本地文件夹中寻找库(.dll)而不是运行时文件夹(可能只能由管理员访问)

    解决方案是

    按照上面的建议更改库文件夹权限 厘米

    将普通用户的权限更改为超级用户 (具有显式访问管理文件夹的本地管理员)

    添加路径 系统环境变量中 PATH 的引用库

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多