尝试COM,C#默认使用stdcall,还是必须指定

时间:2011-03-30 17:30:22

标签: c# c++ com

我正在使用的这本书描述了COM的C ++用法,并推荐__stdcall作为说明符,认为更多语言使用这种堆栈清理方法。

但是,我正在考虑未来与C#的互操作性。 C#默认使用stdcall,还是必须指定?

2 个答案:

答案 0 :(得分:2)

使用COM互操作,无关紧要。

如果你使用C#调用平台调用服务(P / Invoke),那么stdcall是默认值。 (从技术上讲,它是Winapi,默认为桌面上的Stdcall),但可以在DllImport规范中覆盖它。

答案 1 :(得分:2)

我建议使用stdcall作为默认说明符,因为它是C#使用的默认值。但是,通过“CallingConvention”属性更改调用约定是微不足道的。

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.callingconvention.aspx