【问题标题】:No_CLR_Support C++ project with a C++/CLI source fileNo_CLR_Support 带有 C++/CLI 源文件的 C++ 项目
【发布时间】:2015-12-11 18:33:32
【问题描述】:

我们有一个 VS2010 C++ 项目,在其项目属性中设置了 No Common Language Runtime Support。然后我看到它有一个包含一些托管代码的源文件,并且该文件的属性设置了“/clr”标志。所以该项目没有 /clr 标志,但它里面有一个文件。我对它是否使项目成为混合模式感到困惑?我可以在 ILDisassembler 中打开输出文件,这让我相信它确实是一个 .NET 程序集。

【问题讨论】:

    标签: visual-studio-2010 visual-c++ c++-cli clr mixed-mode


    【解决方案1】:

    这完全正常,C++/CLI 项目通常包含本地 C++ 和 C++/CLI 源代码文件的混合。常规设置页面中的设置仅设置编译器将采用的默认值。但是为每个单独的源文件打开它是非常有效和常见的。

    执行此操作的其他方法是将本机 C++ 代码保留在单独的库项目中并链接它。或者通过使用 #pragma managed 在单个源代码文件中即时打开和关闭 MSIL 代码生成。

    链接器不必被告知它,它可以从目标文件的内容中得知。是的,您将获得一个混合模式的 .NET 程序集。将 C++/CLI 位编译为 MSIL,将本机 C++ 代码编译为机器代码。

    【讨论】:

    • 这意味着被认为是纯 c++ 应用程序的应用程序是混合模式的应用程序,并且依赖于 .NET FW。 :D
    • 从技术上讲,这并不准确。本机 C++ 应用程序可以很好地加载这样的 DLL 并使用其正常的本机入口点,而无需加载 .NET Framework。你的问题中没有任何暗示是这种情况。使用调试器,查看它的 Debug > Windows > Modules 窗口。如果您看到 clr.dll 或 mscorwks.dll,那么您确实有一个 .NET 依赖项。
    • 没有单独的 DLL,它只有一个项目,在其属性中设置了 NO_CLR,其中一个 .cpp 文件设置了 /clr。
    猜你喜欢
    • 2019-09-15
    • 2017-04-08
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2012-08-04
    • 2022-01-05
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多