我有一个C
库代码,其中定义了extern
方法:
typedef unsigned int U32;
extern U32 iw(U32 b, U32 p);
我还有Assembler
代码,其中定义了此方法。
如何从C#代码中调用此C
(或可能是Assembler
)方法?
我可以使用DllImport
attribute吗?
答案 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);