来自C#的Extern C方法调用

时间:2011-08-03 19:13:44

标签: c# c .net-2.0 .net-1.1 extern

我有一个C库代码,其中定义了extern方法:

typedef unsigned int    U32;
extern U32 iw(U32 b, U32 p);

我还有Assembler代码,其中定义了此方法。

如何从C#代码中调用此C(或可能是Assembler)方法?
我可以使用DllImport attribute吗?

2 个答案:

答案 0 :(得分:2)

请注意,您需要考虑调用约定。大多数Win32 API都是使用stdcall编写的,因此P/Invoke默认使用stdcall。但是,VC ++默认使用CDecl

如果遇到问题,可以将导出的函数修改为stdcall,也可以修改P/Invoke声明(我认为CallingConvention有一个可选的DllImport参数1}}属性)

答案 1 :(得分:1)

是的,您可以使用以下内容来调用C dll函数:

[DllImport("your.dll", EntryPoint="iw")]
public static extern UInt32 NiceNameFunc(UInt32 niceNameA, UInt32 niceNameP);