Problem mit C++ Dll für C#-Anwendung?
-
gelöscht!
-
Cool wollte ich schon immer wissen
-
Das Problem liegt nicht auf "SetHomePath", sondern auf einen Constructor. Bei der Initialisierung des Constructors wird eine Funktion einer weiteren statischen C-Bibliothek aufruft, und der Aufruf dieser Funktion bleibt.
Ich habe das Problem auch beim MSDN Forum gefragt, dort habe ich eine Antwort bekommen:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1906081&SiteID=1&mode=1
-
Hallo,
ich habe auch ein Problem. Ich befasse mich erst seit kurzen mit DLLs in C#.
Das Problem ist, dass in der DLL eine Klassenstruktur ist.Unter C++ kann ich einfach schreiben
CSerialInterface *mInterface
und kann dann eben wunderbar damit arbeiten... z.B.
mInterface->Echo(0,0,NULL)
Jetzt ist meine Frage: Wie kann ich das in C# realisieren? Also ganz normal auf Funktionen zuzugreifen ist ja kein problem, aber was muss ich beachten, wenn ich ein Objekt anlegen will?
vielen Dank
Gruß
Tobias
-
Le.Wang schrieb:
Hallo,
ich versuche ein altes C++ Programm(Konsole) in einer neuen C#-Anwendung zu integrieren. Um es zu realisieren, habe ich eine Dll aus dem C++ Programm erweitert . Die Methoden von der Dll kann ich unter C# importieren. Aber der ganze Prozess von C#-Anwendung bleibt jedes mal stehen, wenn irgendeine Methode von der Dll aufgerufen wird.
Ich habe nur sehr wenige Erfahrung mit C++ und der Aufruf von einer Dll auch nicht überwachbar(debug) ist, kann ich jetzt gar nicht weiter gehen. Wo können meine Fehler liegen?
Ich versuche die folgende Main-Funktion in C# auszuführen:
[code] Code gelöscht! [/code]
z.B ist die Methode "SetHomePath()" so implementiert:
[code] void SetHomePath(string &szPath){m_szPathHome = szPath;} [/code]
Ich habe die Dll so programmiert:
[code] Code gelöscht! [/code]
Dann habe ich eine C#-Klasse implementert, die die Dll importiert:
Code gelöscht!
Die Hauptprozess von der C#-Anwendung ruft die Dll-Methoden genau wie den obigen main()-Prozess:
Code gelöscht!
Das Thread bleibt bei der Ausführung der einfachen Methode "SetHomePath()" schon stehen. Habe ich etwas falsch gemacht?
Ich freue mich über jeden Tipp! Vielen Dank im Voraus!
Le