我有一個具有以下定義的非託管代碼,
從C++ CLI傳遞結構向非託管代碼
void Load(const somestruct& structinst)
{
//dosomething.
}
我想從CLI的結構在非託管代碼傳遞給此方法作爲參考,並得到在CLI中返回結構。
我試圖創造一個CLI作爲結構
[StructLayout(LayoutKind::Sequential, CharSet = CharSet::Ansi, Pack = 2)]
ref struct TEST
{
[MarshalAs(UnmanagedType::SysInt)]
int k;
};
,並試圖傳遞結構作爲
CLIWrapperClass::WrapperMethod()
{
TEST test;
this->NativeClassInstance->Load(test);
}
和我越來越喜歡error C2664: 'NativeClass::Load' : cannot convert parameter 1 from 'Namespace::WrapperClass::TEST' to 'NativeClass::somestruct&'
錯誤我將如何實現這一目標?
有很多*錯誤的東西。 ref結構是託管代碼中的一個類。您不使用C++/CLI中的編組屬性,該語言旨在處理該問題。但真正的問題是,你只是聲明瞭一個與非託管類型不同的託管類型。編譯器不喜歡那樣。寫一個真正的包裝。 –