Próbuję wywołać istniejącą bibliotekę C++ z aplikacji języka C# za pomocą warstwy interakcji C++/CLI. Mam C++ funkcja, która wygląda mniej więcej tak:System :: IntPtr do int * w C++/CLI
void doSomething(int* foo, int size);
a obiekt C#, która posiada dwa pola, to początek IntPtr i rozmiaru int. Napisałem C klasy zarządzanej ++, który wygląda tak:
public ref class Wrapper {
public:
void run(System::IntPtr itn, int size);
};
A teraz chcę zadzwonić doSomething w otoki :: biegu i mają doSomething mieć dostęp do tego samego bloku danych, że punkty C# sprzeciw wobec. Czy to, co próbuję zrobić bez kopii, a jeśli tak, to w jaki sposób?
pewno oznaczało napisać, że jako 'void run (int% ITN, int size) '? Jeśli nie, to pamięć musi być przypięta przez kogoś. Czy ** nie ** zignoruj to wymaganie, najlepiej zrobić to w C++/CLI z pin_ptr <>, aby kod C# mógł po prostu użyć int []. –
Przepraszam, jestem nowy w CLI i C#, jestem w większości zaznajomiony z C++ i C. Co robi przypinanie pamięci? –