Я начинаю с C++/CLI в сочетании с IronPython :) У меня возникла проблема с управляемыми структурами в коде Python. Моя структура выглядит так
[System::Runtime::InteropServices::StructLayout(
System::Runtime::InteropServices::LayoutKind::Sequential)]
public value struct VersionInfo
{
[System::Runtime::InteropServices::MarshalAsAttribute(
System::Runtime::InteropServices::UnmanagedType::U4)]
DWORD Major;
};
Передача этой структуры в Python выглядит следующим образом
VersionInfo^ vi = gcnew VersionInfo();
vi->Major = 12345;
IronPython::Runtime::PythonFunction^ function =
(IronPython::Runtime::PythonFunction^)
m_PluginScope->GetVariable("GetGlobalInfo");
array<VersionInfo^>^ args = gcnew array<VersionInfo^>(1)
{
vi
};
auto result = m_Engine->Operations->Invoke(function, args);
И, наконец, код Python:
def GetGlobalInfo(info):
info.Major = 55
return info.Major
Возвращаемое значение в result равно не 55, как ожидалось, а 12345. Может ли кто-нибудь помочь мне выяснить, почему значение не изменилось из кода Python? Спасибо