如何识别项目是托管 c++ 项目还是非托管 c++ 项目

Posted

技术标签:

【中文标题】如何识别项目是托管 c++ 项目还是非托管 c++ 项目【英文标题】:How to identify whether a project is managed c++ project or unmanaged c++ project 【发布时间】:2017-06-29 13:26:58 【问题描述】:

我有一些 c++ 项目,其中包含托管和非托管 c++ 项目。

如何识别哪个项目是托管 c++ 以及哪个项目是非托管 c++ 类型。

除了以上内容,有人可以简要介绍一下这些托管和非托管 c++ 的含义。

【问题讨论】:

Difference between managed c++ and c++ 【参考方案1】:
    转到项目属性,常规“块” 项目默认部分 公共语言运行时支持选项

如果此选项设置为“无公共语言运行时支持”,则它是“托管”C++,在任何现代版本的 Visual Studio 中都是 C++/CLI(除非设置为“Old Syntax”,则它是原始托管 C++ 语法)。

参考:Managed Extensions for C++(旧语法)C++/CLI

【讨论】:

在 VS 2019 中它在 C/C++->General->Common Language RunTime Support 下【参考方案2】:

转到项目属性 -> C++ -> 命令行

如果它包含/clr,则该项目是在 C++/CLI 下构建的,否则它是“非托管”的。

【讨论】:

/clr 不是“托管”c++ 的唯一选择,至少在 Visual Studio 2017 中是这样。

以上是关于如何识别项目是托管 c++ 项目还是非托管 c++ 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 C++/CLI 代码进入非托管 C++ 库

如何使用 C++ 非托管库在 Visual Studio 2017 中为 Xamarin.Forms 设置项目?

将非托管 C++ dll 添加到托管 C++ dll

调试从非托管 C++ 调用的托管 .NET 代码

将非托管 c++ 类库暴露给 c#

加快构建时间的方法? (C#/非托管 C++)