Einzelnen Beitrag anzeigen

Kyon

Registriert seit: 11. Apr 2011
2 Beiträge
 
#1

Zugriff von C# auf Delphi-Library

  Alt 11. Apr 2011, 10:34
Hi ^^

ich habe hier ein Problem mit dem Aufruf von Funktionen einer Delphi-DLL (Kein ActiveX, verwendet wird Delphi 7 für Windows). Der Zugriff auf die Dll erfolgt genau so wie ich es bei C++-DLLs mache:

Code:
[DllImport("MyDll.dll", EntryPoint = "openDB", CallingConvention = CallingConvention.StdCall)]
    private static extern void _OpenDB();
Der Aufruf von openDB sorgt dafür, dass innerhalb der DLL eine Datenbankverbindung initialisiert wird. Verwendet wird diese dann jeweils über Query-Funktionen:

Code:
[DllImport("MyDll.dll", EntryPoint = "queryX", CallingConvention = CallingConvention.StdCall)]
    public static extern string _QueryX(Char[] val);
Nun zum eigentlichen Problem: Die Datenbankverbindung wird in einem eigenen Thread erstellt. Der Aufruf einer Query*-Funktion erfolgt jeweils aus einem eigenen Thread heraus. Bei diesen Aufruf bleibt der Thread der C#-Anwendung offenbar stehen. Nach dem Aufruf des Einsprungspunktes der DLL sollte sofort eine Debugging-Meldung ausgegeben werden, was nicht der Fall ist. Zu dem Zeitpunkt erfolgt also noch gar kein Zugriff auf die Datenbankobjekte.

Bei C++-DLLs ist sowas kein Problem. Leider bin ich kein erfahrener Delphi-Programmierer und würde gerne wissen, ob sich Delphi hier irgendwie anders verhält. (Alle Funktionen wurden mit einem stdcall; versehen und mit extern auch exportiert)
  Mit Zitat antworten Zitat