从c#调用外部的C方法
本文关键字:方法 外部 调用 | 更新日期: 2023-09-27 18:04:30
我有一个C
库代码,其中定义了extern
方法:
typedef unsigned int U32;
extern U32 iw(U32 b, U32 p);
我也有Assembler
代码,其中定义了这个方法。
我如何从c#代码调用这个C
(或甚至可能是Assembler
)方法?
我可以使用DllImport
属性吗?
请注意,您需要考虑调用约定。大多数Win32 api都是使用stdcall
编写的,因此P/Invoke
默认使用stdcall
。但是vc++默认使用CDecl
。
如果你遇到问题,你可以修改你的导出函数为stdcall
,或者你可以修改你的P/Invoke
声明(我认为DllImport
属性有一个可选的CallingConvention
参数)
是的,你可以使用下面的代码来调用你的C dll函数:
[DllImport("your.dll", EntryPoint="iw")]
public static extern UInt32 NiceNameFunc(UInt32 niceNameA, UInt32 niceNameP);