Einzelnen Beitrag anzeigen

helste

Registriert seit: 16. Jul 2009
72 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: DLL Problem mit XE7

  Alt 8. Apr 2015, 15:50
Das ist etwas schwierig auf einen Nenner zu bringen.
Ich habe ganze Eingabemasken inklusive Datenbankzugriff, die problemlos funktionieren. Dann gibt es wieder welche, die das Problem verursachen.
Bei einer Maske musste ich z.B. TFileSaveDialog durch TSaveDialog ersetzen, damit sie funktioniert. Die selbe DLL mit TFileSaveDialog mit Delphi XE5 kompiliert macht kein Problem.

In der DLL kann das z.B. so aussehen:

Code:
procedure edit_test; stdcall;

begin
.....
end;
im rufenden Programm kommt dann z.B. folgendes:
Code:
var
  edit_test : procedure; stdcall;
  testdll : HMODULE;


procedure TForm1.Button1Click(Sender: TObject); // DLL laden

begin
testdll := LoadLibrary('testdll.dll');
if testdll <> 0 then
   begin
   @edit_test := GetProcAddress(testdll, 'edit_test');
   end;
end;

procedure TForm1.Button2Click(Sender: TObject); // Routine aufrufen

begin
edit_test;
end;

procedure TForm1.Button3Click(Sender: TObject); // DLL freigeben
begin
FreeLibrary(LHnd);
edit_test := nil;
end;

Ich habe das zum Testen bewusst auf 3 Schalter gelegt. Beim Drücken von Button1 wird das Programm jedoch schon kommentarlos beendet.


Ich werde versuchen ein komplettes Programm samt kompletter DLL zu erstellen, welches möglichst einfach gehalten ist, aber das Problem bringt. Ich hoffe das gelingt.

Ich weiß, so wird es schwierig. Warum kompiliert XE5 die DLL so, dass sie funktioniert und XE7 macht Mist? Das ist mal die Hauptfrage, die mich beschäftigt.
  Mit Zitat antworten Zitat