使用C#和C++/CLI從interop開始的最佳在線指南/教程是什麼?我正在尋找一個將C#中的結構傳遞給C++/CLI的好指南。我見過的許多教程都沒有涉及將C#中創建的自定義結構傳遞給C++/CLI。 有什麼建議嗎?將C#結構傳遞給C++/CLI
謝謝。
使用C#和C++/CLI從interop開始的最佳在線指南/教程是什麼?我正在尋找一個將C#中的結構傳遞給C++/CLI的好指南。我見過的許多教程都沒有涉及將C#中創建的自定義結構傳遞給C++/CLI。 有什麼建議嗎?將C#結構傳遞給C++/CLI
謝謝。
你沒有找到很多教程的原因是,它沒有什麼。您通過從C#中的管理結構,C++/CLI以同樣的方式,你會到另一個C#類/方法
說你有在C#中的結構:
public struct TheStruct
{
public int i;
public String str;
}
你會寫在C++/CLI的方法看起來是這樣的:
// *.h
void PassStruct(TheStruct ^myStruct);
// *.cpp
void classnamegoeshere::PassStruct(TheStruct ^myStruct)
{
int j = myStrict->i;
String ^localStr = myStruct->str;
}
所以,一對夫婦的音符......
你必須要小心,不要創建循環引用,所以你可能需要有TheStruct在C++/CLI定義在這種情況下,它會 樣子:
公衆裁判結構TheStruct { 市民: INT I; String^str; }
容易嗎?
這聽起來很容易。我正在將C#結構編組爲一個指針並將其傳遞到C++/CLI中......但這變得複雜了。謝謝,這正是我正在尋找的。 – roboto1986
@大衛我想給你+1,但是你當前的聲望完全是1337,我不想成爲那個混亂的人。 – displayname
[This](http://msdn.microsoft.com/en-us/library/aa288468%28v=vs.71%29.aspx)沒有幫助?有關於編組結構的全部內容。 – nneonneo
@nneonneo,一目瞭然,我沒有看到任何關於將結構從C#傳遞到C++的問題,這正是OP所要求的。這是一個常見的錯誤,因爲大多數情況下,.NET都會調用非託管代碼,但是從非託管環境調用託管代碼看起來可能會更棘手,如果不是,則不可能。 – series0ne
嗯,這就是編組通常的含義 - 將託管對象變爲非託管對象。即使從託管代碼調用非託管代碼,您也需要能夠雙向轉換結構以實現有效的互操作。 – nneonneo