![]() |
Delphi-Version: 7
Delphi 7 DLL-Exports überladener Methoden?
Moin, irgendwie funktioniert das bei mir nicht.
Delphi-Quellcode:
exports
//NSet(var A: IRational; const N: IInteger; const D: IInteger = nil) name 'NSetIInt', NSet(var A: IRational; const N: IInteger; const D: IInteger) name 'NSetIInt', NSet(var A: IRational; const N: Integer; const D: Integer) name 'NSetInt', NSet(var A: IRational; const N: Int64; const D: Int64) name 'NSetI64', NSet(var A: IRational; const B: IRational) name 'NSetIRat', NSet(var A: IRational; const B: Extended) name 'NSetExt', ... Zitat:
Wobei der zweite Folgefehler ... das = also der DefaultParam ist nicht beim N:IInteger, sondern erst beim D:IInteger. :stupid: Ganz ohne Pamameterliste, kommt die erste Fehlermeldung erst nach dem Komma, was da ja auch OK ist. Auch Overloaded über mehrere Units, wenn eine Unit nur eine der Überladungen hat, dann hilft auch kein Namespace.
Delphi-Quellcode:
exports
IDPrimes.NInt; Am Liebsten hätte ich die DCU gern zur OBJ gemacht, um sie im Delphi 11 direkt linken zu können. (aber das geht nur aus einer PAS zu erzeugen) Drum versuche ich das DECMath jetzt in eine DLL zu packen. |
AW: Delphi 7 DLL-Exports überladener Methoden?
Kannst du mal ein Minimalbeispiel machen? Ein schnell zusammengehackter Versuch zeigt keine Probleme.
|
AW: Delphi 7 DLL-Exports überladener Methoden?
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi Encryption Compendium\5.2 (Unicode Version 2008)\Archive\D7\DECMath.dpr
Dat WinHelp zum Laufen gebracht und die D7-Hilfe sagt, dass es damals auch schon gehen sollte. PS: für ![]() und ![]() Die Download-Links sind leider alle tot (eine Anmeldung für den Anhang hab ich nicht). Die beiden KB für Win8.1 x86 und x64 gibt es noch, unter neuen Link, aber im Win10 wollen sie sich nicht installieren lassen. |
AW: Delphi 7 DLL-Exports überladener Methoden?
Da die Namen nach außen ohnehin anders lauten, warum benennst du die intern nicht einfach um? Dann kannst du exports ja nur mit den Namen selbst nutzen, so dass du das Problem gar nicht hast.
|
AW: Delphi 7 DLL-Exports überladener Methoden?
Zitat:
Delphi-Quellcode:
library Project1;
{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt- Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL. Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String- Informationen als PChar- oder ShortString-Parameter übergeben. } uses SysUtils, Classes; {$R *.res} type IRational = interface ['{4270A50C-2619-40F9-AAF8-2CCB6A67A423}'] end; IInteger = interface ['{0E5936CA-C257-4820-86E4-3B192133E8D6}'] end; // procedure NSet(var A: IRational; const N: IInteger; const D: IInteger = nil); procedure NSet(var A: IRational; const N: IInteger; const D: IInteger); overload; begin end; procedure NSet(var A: IRational; const N: Integer; const D: Integer); overload; begin end; procedure NSet(var A: IRational; const N: Int64; const D: Int64); overload; begin end; procedure NSet(var A: IRational; const B: IRational); overload; begin end; procedure NSet(var A: IRational; const B: Extended); overload; begin end; exports //NSet(var A: IRational; const N: IInteger; const D: IInteger = nil) name 'NSetIInt', NSet(var A: IRational; const N: IInteger; const D: IInteger) name 'NSetIInt', NSet(var A: IRational; const N: Integer; const D: Integer) name 'NSetInt', NSet(var A: IRational; const N: Int64; const D: Int64) name 'NSetI64', NSet(var A: IRational; const B: IRational) name 'NSetIRat', NSet(var A: IRational; const B: Extended) name 'NSetExt'; begin end. |
AW: Delphi 7 DLL-Exports überladener Methoden?
Zitat:
Zitat:
Viele Downloads sind dahin (auch die Webseite von Luckie) Hab meine alte ZIP gestern als DEC-Legacy in einem GitRepo, mit zurückliegenden Commits, neu zusammengestellt. Maaaaaaaaaaaa .... viele Namen, über die man Tagen immer wieder stolpert. negaH, Luckie, Robert Marquardt, ... :cry: |
AW: Delphi 7 DLL-Exports überladener Methoden?
Zitat:
|
AW: Delphi 7 DLL-Exports überladener Methoden?
Jaaaaa, aber ich hoffte es geht auch ohne noch weitere zusätzliche Calls drumrum. :stupid:
Außerdem erstmal alle gefühlt 200.000 Wrapperfunktionen schreiben :freak: Und boar eh, wie man Strg+# vermissen kann, auch wenn es jahrelang kaum nutzbar war, aber nun, wo es garnicht geht .... Die meisten Funktionen dann, auf der anderen Seite (Delphi 10+) in einen/mehrere Custom-Records packen, steht noch an ... zum Glück ist VAR fast immer der erste Parameter, so dass ich die Record-Methode direkt auf die passende DLL-Funktion als export definieren kann. |
AW: Delphi 7 DLL-Exports überladener Methoden?
Wie schon oben erwähnt funktionieren die reinen Deklarationen schon. Eventuell hat es etwas mit den Interfaces zu tun?
|
AW: Delphi 7 DLL-Exports überladener Methoden?
Selbst ohne GUID kompiliert dein Code. :vernupft:
Delphi-Quellcode:
Die genaue Deklaration kann ich nicht sehen.
IRational = interface
end; IInteger = interface end; Hab ja nur die DCU und das abgespeckte "so in etwa"-Interface der Unit, aber im CodeInsight sieht es eigentlich OK aus. Direkt nutzen und kompilieren lässt es sich aber. ![]() |
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