In DLL Funktionen aus anderer DLL nutzen

    In DLL Funktionen aus anderer DLL nutzen

    Hallo zusammen,

    mal ein grundsätzliche Frage :

    Ist es möglich innerhalb einer DLL "A" eine weitere, andere DLL "B" einzubinden und Funktionen aus "B" zu nutzen?
    Wenn ja, hat jemand ein Beispiel dafür?

    Vielen Dank schon mal im Voraus.

    VG
    UweF
    Servus! ;)

    U. Friedrich
    Windows selbst macht das ja auch ständig, von daher geht es ;)
    Beispiel (Erste DLL):

    Delphi-Code

    1. ​library FirstDLL;
    2. {$R *.res}
    3. function MultiplyBy2(Value: integer): integer; stdcall;
    4. begin
    5. Result := Value * 2;
    6. end;
    7. exports
    8. MultiplyBy2;
    9. begin
    10. end.


    Die 2. DLL bindet diese nun statisch ein (dynamisch ginge auch, war mir aber zuviel Tipparbeit):

    Delphi-Code

    1. ​library SecondDLL;
    2. {$R *.res}
    3. function MultiplyBy2(Value: integer): integer; stdcall; external 'FirstDLL.dll'
    4. name 'MultiplyBy2';
    5. function CalcNewValue(Value: integer): integer; stdcall;
    6. begin
    7. Result := MultiplyBy2(Value);
    8. end;
    9. exports
    10. CalcNewValue;
    11. begin
    12. end.


    Das Testprogramm bindet nun die 2. DLL ein und benutzt die dort exportierte Funktion:

    Delphi-Code

    1. ​function CalcNewValue(Value: integer): integer; stdcall; external 'SecondDLL.dll'
    2. name 'CalcNewValue';
    3. procedure TFormTest.ButtonTestClick(Sender: TObject);
    4. begin
    5. ShowMessage(IntToStr(CalcNewValue(5)));
    6. end;
    10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
    Ich bin mir sogar fast sicher, dass Du in Dll2 die Funktion aus Dll1 (hier "MultiplyBy2") auch noch exportieren kannst.

    Wozu sowas gut sein soll sei mal dahingestellt, aber wer einen Hammer hat, sieht plötzlich lauter Nägel :D
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')