2009-07-22 45 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);