Windows VS 2008中的QT应用程序构建在XP中不起作用

Windows VS 2008中的QT应用程序构建在XP中不起作用,windows,visual-studio-2008,qt,windows-7,windows-xp,Windows,Visual Studio 2008,Qt,Windows 7,Windows Xp,您好,我已经在VS2008中使用QT插件创建了一个应用程序&它在所有windows系统中都运行良好。 但是当我尝试在XP中运行同一个应用程序时,它显示错误::过程入口点xxx在xxx.dll中找不到 我怎样才能解决这个问题。 我认为您需要在XP系统上安装VS 2008运行时。您可以通过以下几种方式实现此目的: VS 2008附带的安装程序(C:\Program Files(x86)\Microsoft SDK\Windows\v6.0A\Bootstrapper\Packages\vcred

您好,我已经在VS2008中使用QT插件创建了一个应用程序&它在所有windows系统中都运行良好。 但是当我尝试在XP中运行同一个应用程序时,它显示错误::过程入口点xxx在xxx.dll中找不到

我怎样才能解决这个问题。
我认为您需要在XP系统上安装VS 2008运行时。您可以通过以下几种方式实现此目的:

  • VS 2008附带的安装程序(
    C:\Program Files(x86)\Microsoft SDK\Windows\v6.0A\Bootstrapper\Packages\vcredist\u x86\vcredist\u x86.exe
  • 将运行时的MSM包合并到MSI安装程序中
  • 将DLL从
    C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT
    复制到与可执行文件相同的目录中可能会起作用
更新: 您的程序在解析在msvcrt.dll中查找的引用时似乎遇到了问题—该系统dll不是VS 2008运行时(msvcrt90.dll)的直接部分。我在VS2008中使用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
,因此不导出它是没有问题的


我建议你使用像依赖行者这样的东西(http://www.dependencywalker.com/)要了解试图从
msvcrt.dll
中提取缺少的
wcscpy_s
符号的内容。我认为很有可能您有一个不属于WinXP的DLL,或者应该重建为“XP兼容”

是的,我试过这个…我安装了带有Qt插件的VS并创建了软件包…&安装在XP和Windows7中,两者都工作正常。但是当我在7中制作包并在XP中运行时,它不是???为什么会发生这种情况。我需要进一步研究这个问题-看起来Qt插件没有使用标准的VS2008 CRT链接库(这就是为什么错误引用的是msvcrt.dll而不是msvcr90.dll)。如果我认为发生了什么(他们正在使用某种黑客链接到遗留的msvcrt.dll),您可能必须选择不使用较新的“安全”运行时函数,如
wcscpy_s()
,因为它们根本不在遗留的运行时dll中,或者重新配置生成以链接到VC9库。@Piotr:我说的“遗留”是指msvcrt.dll不支持使用VS2005和更高版本(可能是VS2002/2003)生成的应用程序,但目前我不能100%确定这一点。请注意您的报价中所说的内容,“它只供系统级组件将来使用”。@amrit_neo:查看我在回答中的更新是否有助于解决您的问题。感谢您的帮助……我尝试过使用Dependency walker,但无法理解它的工作原理。