我正在使用VS 2008编写一个简单的vanilla c ++控制台应用程序。当我创建项目时,IDE为我提供了.net版本的选择。 “无”没有选项。当我查看项目属性页面时,Targeted Framework具有我选择的任何值,并且显示为灰色。
当我尝试在没有clr的Windows机器上运行应用程序时,它会给我一个设置错误并退出。
我的代码中没有任何与.net有关的内容。我怎样才能逃脱.net和clr的魔掌?
答案 0 :(得分:5)
您是如何创建项目的?如果我启动Visual Studio 2008并转到文件/新建/项目... /其他语言/ Visual C ++ / Win32 / Win32控制台应用程序,我会得到一个没有.net依赖的普通旧C ++项目。
答案 1 :(得分:2)
确保选择“Win32控制台应用程序”项目类型。这将为您提供仅限C ++的项目。大多数其他控制台选项将项目绑定到.Net。
答案 2 :(得分:1)
选择Win32控制台应用程序。窗口顶部的下拉是无关紧要的。
alt text http://img15.imageshack.us/img15/2029/screenmzi.jpg
答案 3 :(得分:1)
问题(基于您在问题下的评论)与.NET无关。
问题很可能是您如何链接到C运行时库。 Visual Studio默认使用动态链接(dll)版本,这意味着dll必须存在于目标计算机上。
简单的解决方法是将项目更改为使用静态链接版本。 在项目属性下 - > C / C ++ - >代码生成,将运行时库设置为多线程或多线程调试(但不多线程(调试)DLL)。
或者,您必须将运行时dll与您的程序一起部署。
答案 4 :(得分:0)
此外,如果您右键单击解决方案资源管理器中的项目并转到属性 - >配置属性 - >常规
如果您遵循上述建议,即不使用clr编译,您应该满意地看到“公共语言支持”字段应设置为“无共同语言支持”!
答案 5 :(得分:0)
使用Dependency Walker找出您的程序需要哪些DLL。可能问题不在于.NET,而在于运行时或ATL库。你使用过静态链接吗?