C ++程序只安装Visual Studio后适用于XP SP2(C++ program works

2019-09-16 10:31发布

我有一个C ++程序。 这是很简单 - 显示的图像(闪屏),并启动其他应用程序,那么当其他应用程序启动时关闭。 其实,这一个: http://www.olsonsoft.com/blogs/stefanolson/post/A-better-WPF-splash-screen.aspx非常微小的变化(我的闪屏图像和我的程序,而不是推出样品一)。

它的工作原理好我的Windows 7开发机器上。 此外,它的工作原理另一个(虚拟)机在Windows XP SP2和安装Visual Studio 2008。 不过,这并不没有Visual Studio的工作就只是在同一个虚拟的Windows XP SP2的机器。 它显示了一个错误:“切入点memmove_s不能设在动态链接库MSVCRT.DLL”。

我发现可能的问题是在WindowsCodec DLL(中明确XP SP2安装没有这样的DLL,但它是在XP SP2的与Visual Studio的Windows / system32文件夹下),所以我把它复制到清晰的系统上的应用程序文件夹。 之后,该计划部分工程(开始后启动其他应用程序),但没有显示启动画面。

微软的Visual C ++再发行组件包(2008和2010)的安装并没有帮助。

我发现一个建议使用静态链接在Visual Studio( 多线程(/ MT)选项,在项目属性- > C / C ++ - >代码生成),但它也没有帮助。

此外,我试图DependencyWalker,但无法找到依赖两个测试系统中的任何差异。

任何人有任何想法,为什么这可能发生? 我完全新的C ++,希望这是显而易见的事情,我只是不知道...

Answer 1:

你的程序在.NET框架中,至少3.0版本的依赖。 这对一个XP SP2安装在默认情况下不可用。 如果您没有看到windowscodecs.dll那么你没有安装.NET的正确版本。 这不,当你安装VS2008,因为它也将安装.NET工作。

下载在这里 。



Answer 2:

C ++程序变得依赖它编译于CRT库的特定版本。 如果运行系统没有在任何本地程序目录版本,或者系统WinSxS文件目录。 这是一个具体问题与C ++ progams使用VS 2005或2008年在这里看到更多的信息编译: http://en.wikipedia.org/wiki/Side-by-side_assembly

您可能会看到这个问题消失,如果你使用VS 2010,因为它使用了依赖分辨率的不同方法。



文章来源: C++ program works on XP SP2 only after installing Visual Studio