Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   DLL erste Gehversuche, Probleme (https://www.delphipraxis.net/192901-dll-erste-gehversuche-probleme.html)

sko1 31. Mai 2017 12:00

Delphi-Version: 10 Berlin

DLL erste Gehversuche, Probleme
 
Hallo,

ich habe hier ein merkwürdiges Phänomen:
Eine DLL die ich erstellt habe, addiert 2 Integer:

Delphi-Quellcode:
library Meine_DLL;


uses
  System.SysUtils,
  System.Classes;

{$R *.res}

function addiere(zahl1, zahl2: integer): integer; stdcall;
begin
  result := zahl1+zahl2;
end;


exports
  addiere;

begin
end.

Ein Programm soll die Funktion verwenden:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

function addiere(zahl1, zahl2: integer): integer; stdcall;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function addiere(zahl1, zahl2: integer): integer; stdcall;
  external 'Meine_DLL.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
  e: integer;
  a, b: integer;
begin
  a := 13;
  b := 36;
  e := addiere(a, b);
  showmessage(e.ToString);
end;

end.

In der DLL kommt zahl1 = 13 und zahl2 = 53253984 an!

Hat jemand eine Idee?

Danke
Ciao
Stefan

Aviator 31. Mai 2017 12:08

AW: DLL erste Gehversuche, Probleme
 
Deklarier die Funktion in der DLL auch mal mit
Delphi-Quellcode:
stdcall;
.

sko1 31. Mai 2017 12:14

AW: DLL erste Gehversuche, Probleme
 
Hatte ich eben auch gesehen, das Problem bleibt!

Nein, Mist, nur Source ändern hilft hier nicht, ich muss, trotz dass ich im Debugger bin, die DLL erst neu erstellen lassen!

Und damit : Problem gelöst :-)

Ciao
Stefan

SneakyBagels 31. Mai 2017 12:16

AW: DLL erste Gehversuche, Probleme
 
Wenn ich stdcall hinzufüge funktioniert es. Steht außerdem auch hier so beschrieben
https://www.delphi-treff.de/tutorial...pascal/dlls/4/

Aviator 31. Mai 2017 12:59

AW: DLL erste Gehversuche, Probleme
 
Zitat:

Zitat von sko1 (Beitrag 1373087)
Hatte ich eben auch gesehen, das Problem bleibt!

Nein, Mist, nur Source ändern hilft hier nicht, ich muss, trotz dass ich im Debugger bin, die DLL erst neu erstellen lassen!

Und damit : Problem gelöst :-)

Ciao
Stefan

Klar. DLL und Anwendung sind zwei unterschiedliche Projekte. Natürlich musst du bei jeder Änderung an der DLL diese auch neu kompilieren. Dafür kannst du aber auch Abhängigkeiten eintragen.

sko1 31. Mai 2017 13:40

AW: DLL erste Gehversuche, Probleme
 
Ich habe eine Projektgruppe, welche die DLL und die benutzende Anwendung beinhaltet.

"Früher erstellen" bei der DLL habe ich angekreuzt, wenn ich aber mit F9 das Debugging der Anwendung starte werden eventuelle vorherige Änderungen im Code der DLL nicht wirksam, erst wenn ich da direkt bei der DLL auf Erstellen klicke!

Ciao
Stefan

bra 31. Mai 2017 13:50

AW: DLL erste Gehversuche, Probleme
 
Früher/später erstellen in der Projektgruppe bezieht sich doch nur auf die Build-Reihenfolge, oder täusche ich mich da? Man muss dann ein Build/Compile All machen, damit auch alle Projekte erstellt werden.

Aviator 31. Mai 2017 14:17

AW: DLL erste Gehversuche, Probleme
 
Liste der Anhänge anzeigen (Anzahl: 1)
Oder wie schon geschrieben einfach die Abhängigkeiten festlegen. Bei einem größeren Projekt mit mehreren DLLs wird das zwar schnell lästig, aber bei einem Testprojekt ist das machbar.
Anhang 47441

sko1 1. Jun 2017 08:12

AW: DLL erste Gehversuche, Probleme
 
Vielen herzlichen Dank!

Die Abhängigkeiten waren die Lösung!
Jetzt kann ich DLL-Code ändern und muss nur die aufrufende App starten, die DLL ist dann bereits auf neuem Stand :-)

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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-2025 by Thomas Breitkreuz