24. Juli 200817 j Hallo Zusammen, Ich bin gerade dabei einen Wrapper zu schreiben um meine älteren c++ Klassen auch in C# verwenden zu können. Das ganze läuft auch ganz gut . Jetzt hab ich eine C++ Methode die Folgendermaßen aussieht: HWND* CForeignSearch::WindowSearch(char *search, int pid, int &count) Der Methode gibt man einen String mit, und die ProzessID. Als Returning wert bekommt man ein array mit HWND's und in count steht die Anzahl der Handles . Meine Managed C++ Wrapper Klasse hätte ich so forgesehen: System::IntPtr* ForeignAPI::CForeignSearchWrapper::WindowSearch(System::String* search, int pid, int& count) { char* text = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(search); HWND *handles = m_delegator->WindowSearch(text,pid,count); System::IntPtr *return_values = new System::IntPtr[count]; for (int i =0;i<count;i++) { return_values[i] = handles[i]; } return NULL; } jetzt bekomme ich jedoch für die zeile System::IntPtr *return_values = new System::IntPtr[count]; den Fehler: "cannot convert from 'System::IntPtr __gc[]' to 'System::IntPtr __gc *'" Kann mir das jemand erklären? CString *temp = new CString[5]; oder int *blabla = new int[5]; funktioniert doch auch einwandfrei!! :confused: Viele Grüße Stefan
27. Juli 200817 j Autor Hallo Zusammen, nach längerem suchen hab ichs jetzt gefunden. In Managed C++ erzeugt man Arrays mit Managed Typen folgendermaßen: array<System::IntPtr>^ return_values = gcnew array<System::IntPtr>(counter); Trotzdem vielen Dank! Gruss Stefan
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.