如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章