2011-05-17 64 views
-1

我需要在C#应用程序中使用C++编码的DLL,在DLL中有一个方法接收在C++中声明的对象,我不知道如何解析在C#中使用C#编写的等效对象与DLL的功能有什么可以帮助我吗?解析一个C#对象到一个C++对象

+5

我是否可以自己组装自己的对象,或者您是否愿意放纵我们一点点的代码? - 另外,请处理您的接受评级,然后返回,并接受正确的答案或发布正确的解决方案并结束问题。 – 2011-05-17 20:14:05

+0

您需要对参数进行编组。如果您发布了C++方法签名,那么帮助定义正确的编组将更加容易。 – esteuart 2011-05-17 20:14:47

+0

你可以发布你的C++函数是如何声明的吗? – yms 2011-05-17 20:15:16

回答

0

如果未管理C++代码或COM,则需要将System.Runtime.InteropServices命名空间与Platform Invoke一起使用。您将需要在C#应用程序中定义结构,并将您的结构所使用的任何类型的对象传递给使用Platform Invoke的方法。为了告诉你,我需要看到一些头文件。

这里有一个例子:

C++头:

struct MyStruct 
{ 
    int size; 
    char* data; 
} 

bool MethodToInvoke(MyStruct* obj); 

C#声明:

struct MyStruct 
{ 
    int size; 
    string data; 
} 

[DllImport("YourDllHere.dll")] 
static extern bool MethodToInvoke(ref MyStruct obj); 

当然,它可能变得更加复杂,但这是一般的想法。

当你不得不担心调用约定和编组数组时,它可能并且可能会变得非常令人讨厌。无论世界需要看到你的一些代码。