【发布时间】:2011-07-16 08:15:34
【问题描述】:
大家好,我已经使用 QT 插件在 VS 2008 中创建了一个应用程序,它在所有 Windows 系统中都运行良好。 但是,当我尝试在 XP 中运行相同的应用程序时,它显示错误 :: 过程入口点 xxx 无法位于 xxx.dll 中。
我该如何解决这个问题。
【问题讨论】:
标签: windows visual-studio-2008 qt windows-7 windows-xp
大家好,我已经使用 QT 插件在 VS 2008 中创建了一个应用程序,它在所有 Windows 系统中都运行良好。 但是,当我尝试在 XP 中运行相同的应用程序时,它显示错误 :: 过程入口点 xxx 无法位于 xxx.dll 中。
我该如何解决这个问题。
【问题讨论】:
标签: windows visual-studio-2008 qt windows-7 windows-xp
我认为您需要在 XP 系统上安装 VS 2008 运行时。您可以通过多种方式做到这一点,包括:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86\vcredist_x86.exe)C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT 复制到与可执行文件相同的目录中可能会起作用。您的程序似乎在解析 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 兼容”。
【讨论】:
wcscpy_s(),因为它们是根本不在旧版运行时 DLL 中,或者重新配置构建以链接到 VC9 库。