2017-04-25 67 views
-1

我已经在C#代码中使用非托管的处理程序,委托就像使用64位的非托管回调

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

定义时调用约定它运作良好,在32位版本,我要求我必须做什么改变在64位版本。包含处理程序的dll的C头定义了如果WIN32为__stdcall,如果WIN64为__fastcall,则所有函数定义为__stdcall(即dll同时包含32位和64位版本)。但在.NET文档中,据说不支持fastcall。我不明白这意味着什么,我应该如何更改(或不更改)64位代码?

+0

[_fastcall](https://msdn.microsoft.com/en-us/library/6xa169sk.aspx)“此调用约定仅适用于x86体系结构。” –

+0

使用32位版本,因为64位版本是一个快速调用,网络文档称fastcall不受支持。 – jdweng

+0

dll和C头文件都带有我购买的硬件,我没有写过。所以我知道你的-1是硬件供应商。 – user5493558

回答

1

你不需要做任何事情。当定位64位代码时,调用约定指令会被忽略,因为该架构只有一个调用约定。保持原样。它将在32位和64位编译时正常工作。