使用64位非托管回调时调用约定

时间:2017-04-25 12:33:33

标签: c# pinvoke 32bit-64bit unmanaged

我有一个在C#代码中使用的非托管处理程序,委托定义为

[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate int Callback (arguments)

它适用于32位版本,我问我在64位版本中需要做些什么改动。如果WIN32则包含处理程序的dll的C头定义为__stdcall,如果WIN64则定义为__fastcall(即dll同时包含32和64位版本)。但在NET文档中,据说不支持fastcall。我不明白这一切意味着什么,我应该如何更改(或不更改)64位代码?

1 个答案:

答案 0 :(得分:1)

你不需要做任何事情。在定位64位代码时,将忽略调用约定指令,因为该架构只有一个调用约定。保持代码不变。它将适用于32位和64位编译。