【问题标题】:Visual Studio 2013: C Application on any Windows versionVisual Studio 2013:任何 Windows 版本上的 C 应用程序
【发布时间】:2014-12-03 19:32:45
【问题描述】:

情况

我有一个用 C 语言编写的 Visual Studio 2013 应用程序。它可以在我的计算机 (Windows 7) 和我测试过该应用程序的其他 Windows 7 计算机上完美运行。

问题

为了让我的应用程序正常工作,必须安装 Microsoft Visual C++ Redistributable,否则需要几个其他 .dll 文件(例如MSVCR120.DLL)。当我在 Windows XP 上尝试这个时,我遇到了以下错误:

C:\path\to\app.exe 不是有效的 Win32 应用程序

找不到解决办法。

问题

我怎样才能解决所有问题并拥有一个可以在任何 Windows 系统上运行的 .exe 文件,无论其配置如何,而无需额外的文件或安装程序?

奖金问题

这些MSVCR***.dll 文件是什么?

【问题讨论】:

  • MSVCR***.dll 文件在哪里?您可以通过使用调试器或进程监视器运行您的应用程序自行发现。
  • 这些文件一般在C:\Windows\System32,但是我想知道里面有什么,为什么需要它们。现在我知道感谢@edtheprogrammerguy

标签: c windows dll visual-studio-2013


【解决方案1】:

您可以静态链接到 vc 运行时,这应该消除安装依赖项的需要。请注意,.exe 会更大,因为在其中编译了依赖项。

Project Settings -> C/C++ -> Code Generation 中设置/MT 为Release 和/MTd 为Debug

您还可以在General -> Platform Toolset 中设置v120_xp 以使您的程序能够在Windows XP 中运行(http://supportxpdotcom.wordpress.com/2013/07/16/xp-targeting-support-in-the-visual-studio-2013-preview/

MSVCR*** 文件是 C 运行时库文件,包含程序中使用的 C 运行时函数的功能。当您静态链接一个程序时,您将它们编译到 .exe 中,因此不必单独分发它们。 (http://msdn.microsoft.com/en-us/library/aa272081(v=vs.60).aspx)

【讨论】:

  • 谢谢,/MT 解决了一个问题。我无法在 Windows XP 上对其进行测试,但我相信 v120_xp 可以解决另一个问题。
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多