【问题标题】:QT application build in VS 2008 is not working in XP在 VS 2008 中构建的 QT 应用程序在 XP 中不起作用
【发布时间】:2011-07-16 08:15:34
【问题描述】:

大家好,我已经使用 QT 插件在 VS 2008 中创建了一个应用程序,它在所有 Windows 系统中都运行良好。 但是,当我尝试在 XP 中运行相同的应用程序时,它显示错误 :: 过程入口点 xxx 无法位于 xxx.dll 中。

我该如何解决这个问题。

【问题讨论】:

    标签: windows visual-studio-2008 qt windows-7 windows-xp


    【解决方案1】:

    我认为您需要在 XP 系统上安装 VS 2008 运行时。您可以通过多种方式做到这一点,包括:

    更新:

    您的程序似乎在解析 msvcrt.dll 中正在寻找的引用时遇到问题 - 一个不直接属于 VS 2008 运行时 (msvcrt90.dll) 的系统 DLL。我在 VS 2008 中使用 Qt 插件测试了一些 Qt 演示,但我没有看到它们直接链接到 msvcrt.dll(正如我所料,程序链接到 msvcr90.dll)。

    但是,当我查看使用 Dependency Walker (http://www.dependencywalker.com/) 的程序时,我确实看到 msvcrt.dll 被拉入 - 链接到 advapi32.dll 的结果(在我的 WinXP系统,到msvcrt.dll 的链接是间接的,虽然netapi32.dll)。我的 WinXP SP3 系统上的msvcrt.dll 副本没有wcscpy_s 的导出,而 Win7 上的那个有。但是在WinXP上使用msvcrt.dll并没有尝试导入wcscpy_s,所以没有导出没有问题。

    我建议您使用 Dependency Walker (http://www.dependencywalker.com/) 之类的工具来找出是什么试图从 msvcrt.dll 中提取缺少的 wcscpy_s 符号。我认为很有可能你有一个不属于 WinXP 的 DLL,或者应该重建为“与 XP 兼容”。

    【讨论】:

    • 是的,我试过了……我用 Qt 插件安装了 VS 并创建了包……并安装在 XP 和 Windows7 中,它工作正常。但是当我在 7 中制作包并在 XP 中运行时,它不是。 ???为什么会这样。
    • 我需要对此进行更多研究 - 看起来 Qt 插件没有使用标准的 VS2008 CRT 链接库(这就是错误引用 msvcrt.dll 而不是 msvcr90.dll 的原因)。如果我认为正在发生的事情(他们正在使用某种 hack 链接到旧版 msvcrt.dll),您可能不得不选择不使用更新的“安全”运行时函数,例如 wcscpy_s(),因为它们是根本不在旧版运行时 DLL 中,或者重新配置构建以链接到 VC9 库。
    • @Piotr: 'legacy' 我的意思是 msvcrt.dll 不支持使用 VS2005 及更高版本构建的应用程序(可能还有 VS2002/2003,但我对此不是 100% 确定眼下)。请注意您的引文中所说的“它仅供系统级组件将来使用”。
    • @amrit_neo:看看我在回答中的更新是否有助于解决您的问题。
    • 感谢您的帮助...我尝试使用 Dependency walker 但无法理解它是如何工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多