如何使用 VS2008 编译所以二进制不需要 .NET?

Posted

技术标签:

【中文标题】如何使用 VS2008 编译所以二进制不需要 .NET?【英文标题】:How to compile using VS2008 so binary doesn't require .NET? 【发布时间】:2009-06-15 18:55:35 【问题描述】:

我正在尝试使用 VS2008 编译一个非常简单的 C 应用程序。我的问题是生成的二进制文件需要系统安装 .NET。项目中没有实际代码使用 .NET 功能,但在任何没有 .NET 的系统上执行期间都会出现错误。

那么,有没有办法使用 VS2008 进行编译,以便生成的二进制文件可以在没有 .NET 的系统上运行?

【问题讨论】:

另见:***.com/questions/768585/… 【参考方案1】:

只需创建一个 C/C++ 项目。在“新建项目”对话框中,在 Visual C++ 下,您有很多选项。 CLR 子类别中的所有项目都是 .NET (C++/CLI),Win32 项目(以及“空项目”)是原生 C/C++ 项目。

您可以在项目属性 -> 常规 -> 公共语言运行时支持下更改现有项目的此设置。

编辑

问题可能实际上不是 .NET,而是 C 运行时。在这种情况下,请在项目属性 -> C/C++ -> 代码生成 -> 运行时库下指定非 DLL 版本。

(如果是这样的话,你可以告诉我们你知道的事情,而不是你对问题的假设,从而让每个人的事情变得更容易。;))

【讨论】:

【参考方案2】:

在项目属性对话框中,转到配置属性 |一般的。 “公共语言运行时支持”选项应设置为“无公共语言运行时支持”。然后重建。

编辑:还要检查名称以 CLR 开头的高级链接器选项。您不应该看到这 3 个项目的任何 /CLR* 设置。如果您使用的是非默认清单,请确保它也没有声明任何 CLR 依赖项。

【讨论】:

我的设置是这样,但是当我尝试在没有 .NET 的系统上运行 exe 时,我收到此错误:“系统无法执行指定的程序。”当我安装 .NET 时,它工作正常。 您是否有任何其他迹象表明您的二进制文件需要 .NET? 您如何在系统上安装 .Net?您是在安装 .NET 还是 Visual Studio?您是否尝试在没有 Visual Studio 的系统上运行调试版本?调试二进制文件不可再分发。 它是 C 代码(显然是 .NET 依赖),它是 exe 的发布版本,没有安装(独立 exe)。 问题可能出在 C 运行时,而不是 .NET。在这种情况下,简单的解决方案是使用静态链接的版本。 (在项目属性 -> C/C++ -> 代码生成中,将运行时库设置为 MT Release(或 MT Debug 用于调试构建)。【参考方案3】:

正如其他人所说,将“Common Language Runtime support”选项设置为“No Common Language Runtime Support”。你说那没有解决它,所以 .NET 一定不是缺少的依赖项。看看免费的Dependency Walker 工具。这将显示您的应用所依赖的所有库。

【讨论】:

【参考方案4】:

创建一个 win32 控制台项目。

【讨论】:

以上是关于如何使用 VS2008 编译所以二进制不需要 .NET?的主要内容,如果未能解决你的问题,请参考以下文章

用VS2008如何编译.c,C语言文件?

WIN7系统下VS2008 UDF编译不成功求助 用于FLUENT的

VS2008开发WinCE程序编译速度慢的解决办法

如何在 VS2008 中打开“自动构建”选项

如何用VS 2008编译出可通用的lib静态库

在VS2008中编译时显示CS5001:不包含适合于入口点的静态“Main”方法 不知道是啥问题?代码如下