2012-06-22 47 views
0

vC++ dll中有一個函數。void *在C#中通過參考

void fun(unsigned int nchannel,int nFGHandle,void* i); 

現在我想在我的C#代碼中調用此dll。 我使用這樣的,

[DllImport ("AVC.dll")] 
public static extern void fun(UInt32 a,int b,ref void c); 

所以我想問

  1. 是否有任何需要marshling的?
  2. 如何使用REF爲無效*我在C#
+0

是'無符號int'真的'UInt32'?我認爲'int'取決於平臺(32對64位)? –

+1

http://msdn.microsoft.com/en-us/library/y31yhkeb.aspx。將不得不標記該方法是不安全的,但是..我敢肯定有更好的方法 –

+0

不,用IntPtr代替。 – user629926

回答

2

據我所知,你用IntPtr元帥void *,但是,如果你需要的返回值,你可以直接使用out <type>和有幾個重載,例如:

[DllImport ("AVC.dll")] 
public static extern void fun(UInt32 a,int b, out int c); 
[DllImport ("AVC.dll")] 
public static extern void fun(UInt32 a,int b, out float c);