ползване на C++ class (unmanaged, native code) в .NET (C# managed code)
Здравейте,
опитвам се да свържа трите и да ползвам С++ native code клас, но ми гърми решението като го пусна на виртуална машина.
Предполагам не съм разписала много добре кода на С++ и прехода в Wrapper-a (Garbage Collector-a не се шегува). Предполагам е от това. Някакви идеи?
Ето какво правя:
Създавам в C# масив int[] myArray = new int[numberElements];
Инициализирам обект от Wrapper класа с пойнтер към създадения масив:
Core.Wrapper controlCpp = new Core.Wrapper(pmyArray, numberElements);
той се създава с конструктор, който взема същия пойнтер към паметта където е масива, и на свой ред създава пойнтер към CoreNativeClass натив обект , със същия пойнтер в конструктора: ptrNative = new CoreNativeClass(pInt, arraySize);
ето така:
CoreNativeClass::CoreNativeClass(int * pInt, int arrsize)
{
vector<int> v;
for (int i = 0; i < 4; i++)
{
v.push_back(0);
}
v[0] = SetFoo_1();
v[1] = SetFoo_2();
v[2] = SetFoo_3();
v[3] = SetFoo_4();
this->vec = v;
pInt[0] = vec[0];
pInt[1] = vec[1];
pInt[2] = vec[2];
pInt[3] = vec[3];
}
Ето ги 3-те solution-a:
https://github.com/VanyaBenovska/Win32ConsolePrj-WrapperCppCLR-C-WPF.NET-Framework
Поздрави!