代码之家  ›  专栏  ›  技术社区  ›  Brian Stewart

用C++/CLI属性避免双重纠缠

  •  2
  • Brian Stewart  · 技术社区  · 16 年前

    我读过西瓦库马尔的书 作用中的C++/CLI 在其他地方),您应该在函数调用上使用clrcall修饰符,以避免双重thunking,如果您知道该方法永远不会从非托管代码中调用。Nish还说,如果方法签名包含任何clr类型,那么jit编译器将自动添加uuclrcall。我不清楚的是,当我创建C++/CLI属性时是否需要包含在某种意义上,属性只能从.NET语言访问,另一方面,C++/CLI编译器(我认为)只生成可从托管代码和非托管代码调用的方法(例如***Get())。那么,我是否需要在我的属性上使用“clrcall”修饰符,如果需要,它会去哪里?关于get/set函数本身?

    1 回复  |  直到 16 年前
        1
  •  3
  •   Brian Stewart    16 年前

    @迈克B-谢谢你给我关于ildasm的提示-我不知道那个工具。

    似乎我误读了/误解了Nish——它消除的“clrcall”修饰符和“double thunking”问题只适用于本机类的方法。默认情况下,托管类的所有方法都是“clrcall”,这在回顾时很明显。

    显然是马库斯·希奇的书 专家C++/CLI 是可用的 as a free download 它在第215页有一个很好的表格,总结了调用约定。