![]() |
dll Progammieren
Hallo
ich habe eine DLL programmiert mit Delphi 2006 und die wird mit .net Delphi 2007 aufgerufen. Jetzt kriege ich immer diesen Fehler Verwalteter Debug-Experte 'LoaderLock' trat mit der Meldung 'Eine verwaltete Ausführung wird innerhalb der Sperre für den OS-Loader versucht. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.' auf. Prozess test.exe (5412) Verwalteter Debug-Experte 'LoaderLock' trat mit der Meldung 'Eine verwaltete Ausführung wird innerhalb der Sperre für den OS-Loader versucht. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.' auf. Prozess test.exe (5412) Verwalteter Debug-Experte 'LoaderLock' trat mit der Meldung 'Eine verwaltete Ausführung wird innerhalb der Sperre für den OS-Loader versucht. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.' auf. Prozess test.exe (5412) Dieses Problem kenne ich nicht, kann mir da jemand bei helfen ? |
Re: dll Progammieren
Ich würde dir vorschlagen gleich wieder auf VCL.Win32 zu wechseln. VCL.NET ist gestorben. Jeder weitere Tag Zeit zu investieren ist vergeutete Zeit.
|
Re: dll Progammieren
Tolle Aussage
bringt mir aber nix, da das Projekt eben schon da ist und auch erweitert werden muß !!! Also brauche ich dennoch eine Lösung. |
Re: dll Progammieren
Zitat:
Googeln nach der Fehlermeldung bringt z. B. diesen ![]() Kannst du eine Minimalcode/Beispiel bringen wie die DLL eingebunden wird bzw. was die DLL macht? Du weißt schon: Glaskugel und so ... |
Re: dll Progammieren
Zitat:
Aber erstmal Grundsätzlich: In .NET spricht man nicht von DLL's sondern von Assemblies. DLL asoziiert eigentlich automatisch unmanaged / native Code, deswegen würde ich in der .NET Welt immer im .NET Sprachgebrauch bleiben. Nun zum Hintergrund: Mit Delphi 2006 erstellst Du eine .NET 1.1 Assembly. Delphi 2007 erzeugt aber .NET 2.0 Anwendungen. .NET 1.1 und 2.0 sind aber dermassen Inkompatibel zueinander, dass das einfach nicht geht. Das wäre wie wenn Du eine 16bit Dll aus einem 32bit Prozess aufrufst: Das knallt vorne und hinten. Abhilfe schafft hier, das Assembly mit Delphi 2007 auch nochmal zu erstellen, damit Du auch hier mit reinem .NET 2.0 arbeitest. |
Re: dll Progammieren
Also die DLL ist eine Delphi 2006 VCL Win32 Dll.
und diese will ich eben in Delphi 2007 dot net aufrufen. |
Re: dll Progammieren
Hier mal das Toll was die DLL aufruft
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls, System.ComponentModel; Function SetPhoneNumbersFormatted(Phonenumber, countrycodewithoutplus : String) : String; stdcall; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.nfm} Function SetPhoneNumbersFormatted(Phonenumber, countrycodewithoutplus : String) : String; stdcall; external 'nummer.dll'; procedure TForm1.Button1Click(Sender: TObject); begin showmessage(SetPhoneNumbersFormatted('2321321321','48')); end; end. |
Re: dll Progammieren
Strings als übergabeparameter in eine DLL? Und das ohne SharMem und dann noch zwischen Win32 und .NET - Das kann ja eigentlich nur krachen!
Stell mal die DLL-Funktion auf PChars, besser PWideChars um. Dann könnte es besser gehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz