从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属性吗?

从c#调用外部的C方法

请注意,您需要考虑调用约定。大多数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);