VS 2008 C++如何制作一个没有.net依赖的项目

Posted

技术标签:

【中文标题】VS 2008 C++如何制作一个没有.net依赖的项目【英文标题】:VS 2008 C++ how to make a project without .net dependency 【发布时间】:2009-06-26 22:07:25 【问题描述】:

我正在使用 VS 2008 编写一个普通的 c++ 控制台应用程序。当我创建项目时,IDE 为我提供了 .net 版本的选择。没有“无”选项。当我查看项目属性页面时,Targeted Framework 具有我选择的任何值并且显示为灰色。

当我尝试在没有 clr 的 Windows 机器上运行该应用程序时,它给我一个设置错误并退出。

我的代码中没有任何与 .net 相关的内容。如何摆脱 .net 和 clr 的魔掌?

【问题讨论】:

解决错误可能是朝着好的方向迈出的一步,究竟是什么? 更有趣的是,当我在文本查看器中查看可执行文件时,它会显示“此程序无法在 DOS 模式下运行”。所以它甚至说我不能做我需要做的事情。 该文本出现在所有 win32 程序中 - 它是在谈论 MS-DOS(还记得吗?8-),而不是 Windows 命令提示符。您不能在 MS-DOS 下运行 Windows 控制台程序。 这个短语出现在每个 PE 可执行文件(EXE、DLL、OCX...)中,所以你不必担心 这令人欣慰。无论如何,错误是“应用程序无法启动,因为应用程序配置不正确。重新安装可能会解决此问题。这发生在没有安装 clr 的机器上。在另外两台具有 clr 的机器上,它运行良好。 【参考方案1】:

您是如何创建项目的?如果我启动 Visual Studio 2008 并转到文件/新建/项目.../其他语言/Visual C++/Win32/Win32 控制台应用程序,我会得到一个没有 .net 依赖项的普通旧 C++ 项目。

【讨论】:

【参考方案2】:

确保您选择了“Win32 控制台应用程序”项目类型。这将为您提供一个仅限 C++ 的项目。大多数其他控制台选项会将项目绑定到 .Net。

【讨论】:

【参考方案3】:

只需选择 Win32 控制台应用程序。窗口顶部的下拉菜单无关紧要。

alt text http://img15.imageshack.us/img15/2029/screenmzi.jpg

【讨论】:

【参考方案4】:

问题(根据您在问题下的评论)与 .NET 无关。

问题很可能是您如何链接到 C 运行时库。 Visual Studio 默认使用动态链接 (dll) 版本,这意味着 dll 必须存在于目标计算机上。

简单的解决方法是将您的项目更改为使用静态链接版本。 在项目属性 -> C/C++ -> 代码生成下,将运行时库设置为多线程或多线程调试(但不是多线程(调试)DLL)。

或者,您必须将运行时 dll 与您的程序一起部署。

【讨论】:

【参考方案5】:

另外,如果您在解决方案资源管理器中右键单击项目并转到属性->配置属性->常规

如果您遵循上述建议,即在不使用 clr 的情况下进行编译,您应该会满意地看到“通用语言支持”字段应设置为“无通用语言支持”!

【讨论】:

【参考方案6】:

使用Dependency Walker 找出您的程序需要哪些DLL。问题可能不在于 .NET,而在于运行时或 ATL 库。你用过静态链接吗?

【讨论】:

以上是关于VS 2008 C++如何制作一个没有.net依赖的项目的主要内容,如果未能解决你的问题,请参考以下文章

我从网上下载了一个用vs2008编写的代码,用vs2008打开时出现了这个错误该怎么办

vs2008中c++为啥代码没有智能提示

vs2008 c++没有智能提示

visual c++ 2008中如何运行一个 .cpp文件

visual c++ 2008中如何运行一个 .cpp文件

如何将 vs2008 c++ OpenCV dll 构建到 vs2008 C#?