Windows VS 2008中的QT应用程序构建在XP中不起作用
您好,我已经在VS2008中使用QT插件创建了一个应用程序&它在所有windows系统中都运行良好。 但是当我尝试在XP中运行同一个应用程序时,它显示错误::过程入口点xxx在xxx.dll中找不到 我怎样才能解决这个问题。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
我认为您需要在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
被拉入-这是链接到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,但无法理解它的工作原理。