使用VS2008编译的C ++应用程序无法在其他计算机上运行

时间:2009-04-10 19:22:09

标签: c++ visual-studio visual-studio-2008 winapi visual-c++

我用 Visual Studio 2008 Visual C ++ 语言创建了一个wn32项目,它使用ws2_32.lib库,然后我在发布模式下编译< / strong>即可。

它在同一台计算机上运行得非常好,但是当我将exe文件复制到其他计算机(没有安装Visual Studio)时,它就不会运行。

我看到的信息是:

此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。

但是,如果我使用 DEV C ++ 编译我的应用程序,与Visual Studio 2008可执行文件(9.5 KB)相比,它会生成更大的可执行文件(738KB)。但是,DEV C ++可执行文件在另一台计算机上运行。

我已将库ws2_32.lib添加到项目的链接器属性中,位于附加依赖项字段中。

如何修复它以使用Visual Studio 2008?

我的代码如下:http://www.stan.com.mx/yupi/udpserver.cpp

4 个答案:

答案 0 :(得分:11)

问题几乎可以肯定是另一台计算机没有安装C ++ CRT的第9版。

VS2008中针对CRT进行编译的默认设置是动态链接与静态链接。如果要使用真实的安装项目部署程序,则需要包含CRT可再发行组件。

但是,如果要进行XCOPY部署,请按照以下页面中的步骤进行操作。

http://msdn.microsoft.com/en-us/library/ms235291.aspx

答案 1 :(得分:4)

尝试安装Visual C++ redistributables。如果这不起作用,请使用DependencyWalker找出缺少的DLL。

答案 2 :(得分:1)

您可能缺少程序所需的外部依赖项。例如,检查项目设置以查看是否动态链接到MFC。您还可以运行Depends实用程序来检查缺少的依赖项。

答案 3 :(得分:1)

我同意JaredPar。使用VS2008构建的应用程序使用动态链接,而DEV C ++是静态链接,因此规模较大,为什么一个工作而不是另一个。

但是,如果它是一个普通的win32应用程序项目(并且您不希望/需要通过设置分发它),那么可能能够让它运行另一台机器没有重新分配CRT,让VS2008为你静态链接(如果它只是你缺少的标准库)。我手边没有VS2008的副本,所以我将在VS2005中描述如何做到这一点,希望它能够翻译过来。

  1. 调出项目的配置属性(右键单击项目名称,然后从菜单中选择“属性”)
  2. 展开“配置属性”,然后“C / C ++”,然后单击“代码生成”
  3. 在“运行时库”项下,针对您的特定配置,选择库的非DLL 版本,即针对您需要的调试版本“多线程调试(/ MTd)”和发布版本你想要“多线程(/ MT)”
  4. 试试看是否有效。你现在显然会得到一个更大的最终二进制文件,因为这个库是静态链接的。