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


Anmelden zum Antworten