VS 2008 中构建的 QT 应用程序在 XP 中无法运行
大家好,我已经使用 QT 插件和 VS 2008 创建了一个应用程序。它在所有 Windows 系统中运行良好。 但是当我尝试在 XP 中运行相同的应用程序时,它显示错误:: 程序入口点 xxx 无法位于 xxx.dll 中。
我该如何解决这个问题。
Hello all i have created an application in VS 2008 using QT plugin & its is working fine in all the windows systems.
But when I try to run the same application in XP it is showing error :: Procedure entry point xxx could not be located in xxx.dll .
How can I solve this problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为你需要在XP系统上安装VS 2008运行时。您可以通过多种方式执行此操作,包括:
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT
中的 DLL 复制到与可执行文件相同的目录中。更新:
您的程序在解析 msvcrt.dll 中查找的引用时似乎遇到问题,该引用是一个不直接属于 VS 2008 运行时 (msvcrt90.dll) 的系统 DLL。我使用 Qt 插件在 VS 2008 中测试了一些 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 兼容”。I think you need to install the VS 2008 runtime on the XP system. You can do that several ways, including:
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
into the same directory as your executable.Update:
Your program seems to be having a problem resolving a reference that's being looked for in msvcrt.dll - a system DLL that is not directly part of the VS 2008 runtime (msvcrt90.dll). I tested some of the Qt demos in VS 2008 with the Qt addin, and I don't see them directly linking to msvcrt.dll (as I expect, the programs link to msvcr90.dll).
However, when I look at the programs using Dependency Walker (http://www.dependencywalker.com/), I do see that
msvcrt.dll
is pulled in - a result of linking toadvapi32.dll
(on my WinXP system, the link tomsvcrt.dll
is indirect thoughnetapi32.dll
). The copy ofmsvcrt.dll
on my WinXP SP3 system doesn't have an export forwcscpy_s
while the one on Win7 does. But nothing usingmsvcrt.dll
on WinXP attempts to importwcscpy_s
, so there's no problem that it's not exported.I suggest you use something like Dependency Walker (http://www.dependencywalker.com/) to find out what's trying to pull in the missing
wcscpy_s
symbol frommsvcrt.dll
. I think that chances are good that you have a DLL that doesn't belong on WinXP or should be rebuilt to be 'XP-compatible'.