2009-07-22 33 views
1

我是C#和visual studio的新手。我有一個C#GUI,它將參數傳遞給從C++ DLL導出的函數。在Visual Studio中平臺2005從C#到C++的封送

我在c的函數++ DLL,它採取下列類型的參數: UINT8 UINT16 LPCWSTR someword(已在c + = DLL中定義的以下的:typedef void *的someword..so基本上someword只是一個空虛的指針。)

你能幫我嗎?我如何將參數從我的C#GUI傳遞給從DLL導入的這個函數。我知道必須使用MarshalAs來完成,但我不知道如何。也C++ DLL不受管理。任何幫助都會有所幫助。

感謝, Viren

+0

@Viren幫助人們通過這些方案:可以請你提供功能的確切定義(在C++ DLL)? – 2009-07-22 16:00:21

+0

sure..it如下: int function(someword somevariable,UINT16 var1,UINT8 var2,UINT8 var3,UINT8 var4,LPCWSTR str1,LPCWSTR str2); – zack 2009-07-22 16:03:14

+0

好吧,既然你提到someword被定義爲void *,那麼void指針將指向什麼(這是什麼類型的結構)非常重要,否則如果ti只是一個「傳遞」指針,那麼你可以使用一個IntPtr變量來表示指針地址..但是,重點是需要更多的清晰度來獲得完整的答案! – 2009-07-22 16:07:19

回答

0

嘗試是這樣的:

[DllImport("lib.dll")] 
public static extern int FunctionName(IntPtr somevariable, ushort var1, byte var2, byte var3, byte var4, [MarshalAs(UnmanagedType.LPWStr), In] string str1, [MarshalAs(UnmanagedType.LPWStr), In] string str2);