繁体   English   中英

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

[英]A C++ Application Compiled With VS2008 Doesn't Run In Other Computer

我用Visual Studio 2008Visual C ++语言创建了一个wn32项目,它使用了ws2_32.lib库,然后我在Release模式下编译。

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

我看到的消息是:

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

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

我已将库ws2_32.lib添加到我的项目的链接器属性,在Additional Dependencies字段中。

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

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

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

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

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

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

尝试安装Visual C ++可再发行组件 如果这不起作用,请使用DependencyWalker找出缺少的DLL。

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

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

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

  1. 打开项目的配置属性(右键单击项目名称,然后从菜单中选择“属性”)
  2. 展开“配置属性”,然后“C / C ++”,然后单击“代码生成”
  3. 在“运行时库”项下,针对您的特定配置,选择库的非DLL版本,即对于您想要的调试版本“多线程调试(/ MTd)和您想要的版本构建”多线程(/ MT) “

试试看是否有效。 你显然会得到一个更大的最终二进制文件,现在这个库是静态链接的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM