-1
我需要在C#應用程序中使用C++編碼的DLL,在DLL中有一個方法接收在C++中聲明的對象,我不知道如何解析在C#中使用C#編寫的等效對象與DLL的功能有什麼可以幫助我嗎?解析一個C#對象到一個C++對象
我需要在C#應用程序中使用C++編碼的DLL,在DLL中有一個方法接收在C++中聲明的對象,我不知道如何解析在C#中使用C#編寫的等效對象與DLL的功能有什麼可以幫助我嗎?解析一個C#對象到一個C++對象
如果未管理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);
當然,它可能變得更加複雜,但這是一般的想法。
當你不得不擔心調用約定和編組數組時,它可能並且可能會變得非常令人討厭。無論世界需要看到你的一些代碼。
我是否可以自己組裝自己的對象,或者您是否願意放縱我們一點點的代碼? - 另外,請處理您的接受評級,然後返回,並接受正確的答案或發佈正確的解決方案並結束問題。 – 2011-05-17 20:14:05
您需要對參數進行編組。如果您發佈了C++方法簽名,那麼幫助定義正確的編組將更加容易。 – esteuart 2011-05-17 20:14:47
你可以發佈你的C++函數是如何聲明的嗎? – yms 2011-05-17 20:15:16