我是新来的C++。我用VS 2008 Professional制作了一个C++程序。我开始使用为我创建窗口的Win32模板。我将其编译到Vista 32上。我将编译好的exe文件带到我的旧版XP SP2计算机上,它告诉我应用程序配置不正确。有什么我做错了吗?我如何让平台独立?应用程序配置不正确错误C++
感谢
我是新来的C++。我用VS 2008 Professional制作了一个C++程序。我开始使用为我创建窗口的Win32模板。我将其编译到Vista 32上。我将编译好的exe文件带到我的旧版XP SP2计算机上,它告诉我应用程序配置不正确。有什么我做错了吗?我如何让平台独立?应用程序配置不正确错误C++
感谢
尝试安装Microsoft Visual C++ 2008 SP1 Redistributable Package,并确保您使用的应用程序的发布版本。
您的目标系统缺少该可执行文件所需的运行时文件。
你可以找到它:Microsoft Visual C++ 2008 Redistributable Package (x86)或Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
确保WINVER设置为包括WinXP的一个版本 - 它看起来像Windows的缺省目标版本为VS 2008是Vista的(为0x0600)。
设置以下预处理器定义:
#define WINVER 0x0501
优选使用项目属性 “C/C++ /预处理器/预处理器定义” 或中的cl.exe命令行上-D选项。也有可能有一个targetver.h文件具有此设置(取决于您最初创建项目的方式)。
有关更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx。
这是一个好主意,但可能不是基于正在发生的错误的问题。 – crashmstr 2009-09-17 18:19:19
您可以使用Dependency Walker来查找目标WinXP系统上缺少哪些组件。然后你应该安装适当的可再分发包。
在项目属性中,将"C/C++ -> Code Generation -> Runtime Library"
设置为"Multi-threaded (Debug)"
。重建之后,应用程序将不再依赖于msvcr90.dll
。然而,应用程序二进制文件会稍大。
当然,对于发布版本,您应该使用“多线程”(而不是调试)。如果你的应用程序本身由多个DLL组成,这也是一个坏主意。 – MSalters 2009-09-18 10:44:14
那么我怎么能做一个没有依赖的应用程序,这有点令人失望,因为我从.Net过渡到希望不必担心这个东西;我可以使用VC 6还是其他? – jmasterx 2009-09-17 17:54:01
您可以通过静态链接到运行时支持库来避免依赖关系。 – 2009-09-17 17:58:23