2011-08-03 200 views
0

我有一個C庫代碼,在其被定義extern方法:外部C方法調用從C#

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

我也有Assembler代碼,在其中定義此方法。

我該如何從C#代碼中調用這個C(或者甚至可能是Assembler)方法?
我可以使用DllImport attribute嗎?

回答

1

是的,你可以使用類似下面的打電話給你的C DLL函數:

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

要知道,你需要考慮調用約定。大多數Win32 API編寫爲使用stdcall,所以P/Invoke默認使用stdcall。但是VC++默認使用CDecl

如果遇到問題,你可以修改你的導出函數是stdcall,也可以修改您的P/Invoke聲明(我覺得有一個可選的CallingConvention參數來DllImport屬性)