Hallo zusammen!
Ich habe ein kleines Problem mit einer DLL, welche ich in einer .net Anwendung verwende. In der DLL habe ich die Funktion:
Welche geerbt ist von:
Den Header habe ich auch in der .net Anwendung.
Ich lade da die DLL, initialisiere alles und rufe dann folgendes auf:
Während bei LoadObjects alles gut geht funktioniert dann DumpTarget nicht. f ist zwar ein gültiger Zeiger, aber wenn ich in DumpTarget eine MessageBox mit der Adresse des dortigen Parameters einbaue kommt zwar ein Zeiger mit Adresse raus, allerdings steht "bad_ptr".
Weiss jemand von euch, warum sämtliche Parameter (std::string, const char*, FILE*, ...) immer ungültig werden mit DumpTarget? Ist das ein Konflikt .net <-> "normales" C++?
/EDIT:
Wenn ich jetzt anstelle von FILE* die Parameter in const char* ändere und den Filename mitliefere, so ist vor IDump->DumpTarget(path) der Pfad korrekt, rufe ich in der DLL in DumpTarget eine MessageBox mit dem Parameter auf, so kommt "¬ç|¢. -¨" u.ä. als Text...
/EDIT2:
Es scheint ein Problem zwischen .net und normalem C++ zu sein. Verwende ich die DLL in einem Projekt ohne CLR geht alles einwandfrei!
Gruss
Cromon
Ich habe ein kleines Problem mit einer DLL, welche ich in einer .net Anwendung verwende. In der DLL habe ich die Funktion:
Code:
void CDumpImpl::DumpTarget(FILE* f)
Welche geerbt ist von:
Code:
virtual void IDumpInterface::DumpTarget(FILE*) = 0;
Den Header habe ich auch in der .net Anwendung.
Ich lade da die DLL, initialisiere alles und rufe dann folgendes auf:
Code:
const char* path = (const char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text).ToPointer();
FILE* f = fopen(path, "a");
IDump->LoadObjects();
IDump->DumpTarget(f);
fclose(f);
Während bei LoadObjects alles gut geht funktioniert dann DumpTarget nicht. f ist zwar ein gültiger Zeiger, aber wenn ich in DumpTarget eine MessageBox mit der Adresse des dortigen Parameters einbaue kommt zwar ein Zeiger mit Adresse raus, allerdings steht "bad_ptr".
Weiss jemand von euch, warum sämtliche Parameter (std::string, const char*, FILE*, ...) immer ungültig werden mit DumpTarget? Ist das ein Konflikt .net <-> "normales" C++?
/EDIT:
Wenn ich jetzt anstelle von FILE* die Parameter in const char* ändere und den Filename mitliefere, so ist vor IDump->DumpTarget(path) der Pfad korrekt, rufe ich in der DLL in DumpTarget eine MessageBox mit dem Parameter auf, so kommt "¬ç|¢. -¨" u.ä. als Text...
/EDIT2:
Es scheint ein Problem zwischen .net und normalem C++ zu sein. Verwende ich die DLL in einem Projekt ohne CLR geht alles einwandfrei!
Gruss
Cromon
Zuletzt bearbeitet: