Ich beginne mit C++/CLI kombiniert mit IronPython :) Ich stieß auf Problem mit verwalteten Strukturen in Python-Code. Meine Struktur sieht wie folgt ausÜbergabe von C++/CLI-Struktur an IronPython PythonFunction
[System::Runtime::InteropServices::StructLayout(
System::Runtime::InteropServices::LayoutKind::Sequential)]
public value struct VersionInfo
{
[System::Runtime::InteropServices::MarshalAsAttribute(
System::Runtime::InteropServices::UnmanagedType::U4)]
DWORD Major;
};
Passing diese Struktur zu Python ist wie folgt
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);
Und schließlich, den Python-Code:
def GetGlobalInfo(info):
info.Major = 55
return info.Major
Der Rückgabewert in Ergebnis ist nicht 55 wie erwartet, aber 12345. Can any Körper bitte helfen Sie mir herauszufinden, warum der Wert nicht von Python-Code geändert wird? Dank
Danke. Ich habe _value_ durch _ref_ in der Strukturdefinition ersetzt und es funktioniert jetzt. –