![]() |
32 zu 64Bit DLL
War bei einem Kumpel und habe da meine DLL von 32BIT nach 64BIT kompiliert.
DLL wird erstellt. Wenn ich jetzt eine *.LIB daraus generieren will kommt folgende Meldung! implib.exe /s KVideoPlayer.lib KVideoPlayer.dll Zitat:
dumpbin /exports KVideoPlayer.dll >KVideoPlayer.def Bekomme ich quasi eine leere DEF. Öffne ich die DLL mit Dependency Walker meldet er mir. Zitat:
Was kann ich tun? gruss |
AW: 32 zu 64Bit DLL
das mit den DLLs ist bei mir zwar schon lange her, aber ich hatte glaube ich immer (automatisch) zuerst per impdef eine "*.def" erzeugt und darauf dann per implib eine LIB.
Am besten hat das damals glaube ich immer mit den "implib" und "impdef" geklappt, welche beim RadStudio für/von C++Builder mit dabei waren. |
AW: 32 zu 64Bit DLL
Zitat:
Zitat:
Eventuell kommt implib damit nicht zurecht. Denn die DLL ist 3,5 MB groß (ja das leidige Problem mit den Dateigrößen um das zweifache gestiegen) vorher 1,1 jetzt 3,5 gruss |
AW: 32 zu 64Bit DLL
Ich rate mal... fehlt bei dir vielleicht die passende C++ Runtime für 64 Bit?
|
AW: 32 zu 64Bit DLL
Zitat:
Ich habe es jetzt mal mit MKEXP.EXE versucht. VS meldet mir dann das die LIB Fehlerhaft sei. Die DLL wird ohne Fehler compiliert\erstellt. Kann mir jetzt nicht vorstellen das irgendetwas fehlt. Mit was kann ich eine 64BIT DEF und 64BIT Lib erstellen ? Poah... Delphi immer mit seinen extra einheiten. gruss |
AW: 32 zu 64Bit DLL
Zitat:
Edit: Okay das lag wohl daran, dass IMPLIB.EXE tatsächlich nur für 32-Bit ist. MKEXP.EXE ist laut meiner Recherche auf jeden Fall die richtige Wahl. Gibt dir der VS Linker evtl. einen Error-Code? |
AW: 32 zu 64Bit DLL
Zitat:
Entweder Tokyo kann 64Bit DLL's erstellen oder nicht. Nur dann sollten sie auch von anderen Sprachen erkannt werden. Wenn jemand Bock hat meinen Source selbst mal als 64BIT zu kompilieren bescheid sagen schicke den dann über MAIL. Bei mir will das irgendwo nicht obwohl die DLL ohne murren erstellt wird. EDIT: Zitat:
gruss |
AW: 32 zu 64Bit DLL
Ich denke nicht, dass es am Kompilat liegt. Das PE Format ist eindeutig definiert und die Export Table - aus der die .lib bzw. .def generiert wird - auch. Ich vermute eher, dass mit der .lib alles ok ist, aber du in Visual Studio falsche Einstellungen gewählt hast.
|
AW: 32 zu 64Bit DLL
Zitat:
Wenn ich die 32BIT lib mit impLib.exe oder mkexp.exe erstelle dann ist dies in beiden fällen korrupt. Deshalb geht auch die 64BitLib nicht. Die 32Bit Library funktioniert einwandfrei. Die 64Bit nicht. Mit LIB /DEF:KVideoPlayer.DEF funktioniert das erstellen einer 64Bit Lib nicht. Bei 32Bit einwandfrei. Zitat:
Zitat:
gruss |
AW: 32 zu 64Bit DLL
Ahh das kann ich dir sogar erklären. Das Name-Mangling mit vorranstehendem _ (bzw. ohne bei
Delphi-Quellcode:
) und folgendem @n ist nur für die
cdecl
Delphi-Quellcode:
Calling-Convention. Unter 64-Bit werden allerdings sämtliche expliziten Calling-Conventions ignoriert und überall der 64-Bit vector-call verwendet (von Delphi-Seite aus).
stdcall
Siehe dazu auch: ![]() ![]() Edit: Aber wenn ich das richtig sehe, exportiert deine DLL ja scheinbar eh auch eine ungemanglete Version. Kannst du mal sowohl die aktuelle 64-Bit DLL (als Kompilat) als auch den C/C++ Header mit Testprojekt hochladen? Dann würde ich mal drüberschauen. |
AW: 32 zu 64Bit DLL
Zitat:
Hmmm... Zitat:
Bin im Net am suchen wie blöde finde da nichts. gruss |
AW: 32 zu 64Bit DLL
Das ist mein Problem!
Zitat:
![]() Kann doch irgendwo nicht sein. Microsoft (R) COFF Binary File Dumper Version 6.00.8168 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. dumpbin /exports KVideoPlayer.dll >KVideoPlayer.def
Code:
Das ist alles was ich bekomme von der 64BIT DLL.
Dump of file KVideoPlayer.dll
File Type: DLL Summary CD28 .bss 46340 .data E3A .didata 567 .edata 4B32 .idata 2D5C4 .pdata 44 .rdata 2AB34 .reloc 7600 .rsrc 31DC84 .text Der gleiche Befehl bei 32BIT
Code:
tja was nun.
Microsoft (R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved. Dump of file KVideoPlayer.dll File Type: DLL Section contains the following exports for KVideoPlayer.dll 0 characteristics 0 time date stamp Thu Jan 01 01:00:00 1970 0.00 version 1 ordinal base 78 number of functions 78 number of names ordinal hint RVA name 78 0 000E9F88 KVideo_CloseFile 39 1 000E9F88 KVideo_CloseFile@0 77 2 000EA510 KVideo_CreateOverlayBaseImage 38 3 000EA510 KVideo_CreateOverlayBaseImage@24 76 4 000EA36C KVideo_DisplayModeChanged 37 5 000EA36C KVideo_DisplayModeChanged@0 75 6 000EA6B8 KVideo_GetCapturedImage 36 7 000EA6B8 KVideo_GetCapturedImage@4 74 8 000E9D94 KVideo_GetLastError 35 9 000E9D94 KVideo_GetLastError@0 73 A 000EA0B0 KVideo_GetMediaInfoText 34 B 000EA0B0 KVideo_GetMediaInfoText@0 72 C 000EA20C KVideo_GetMediaProperty 33 D 000EA20C KVideo_GetMediaProperty@4 71 E 000EA3FC KVideo_GetPlayerState 32 F 000EA3FC KVideo_GetPlayerState@0 70 10 000E9FB8 KVideo_GetStreamInfo 31 11 000E9FB8 KVideo_GetStreamInfo@108 69 12 000EA414 KVideo_GetStreamPosition 30 13 000EA414 KVideo_GetStreamPosition@0 68 14 000E9CE8 KVideo_GetVersion 29 15 000E9CE8 KVideo_GetVersion@0 67 16 000EA2D4 KVideo_GetViewSize 28 17 000EA2D4 KVideo_GetViewSize@8 66 18 000E9E20 KVideo_GetWorkingVR 27 19 000E9E20 KVideo_GetWorkingVR@0 65 1A 000EA14C KVideo_GetXySubFilter 26 1B 000EA14C KVideo_GetXySubFilter@4 64 1C 000EA574 KVideo_HasOverlayImage 25 1D 000EA574 KVideo_HasOverlayImage@0 63 1E 000E9D14 KVideo_Initialize 24 1F 000E9D14 KVideo_Initialize@8 62 20 000EA304 KVideo_KeepAspectRatio 23 21 000EA304 KVideo_KeepAspectRatio@4 61 22 000EA078 KVideo_MediaInfoServiceReady 22 23 000EA078 KVideo_MediaInfoServiceReady@0 60 24 000E9E84 KVideo_OpenFile 59 25 000E9EE4 KVideo_OpenFile2 20 26 000E9EE4 KVideo_OpenFile2@8 21 27 000E9E84 KVideo_OpenFile@4 58 28 000EA3B4 KVideo_Pause 19 29 000EA3B4 KVideo_Pause@0 57 2A 000EA390 KVideo_Play 18 2B 000EA390 KVideo_Play@0 56 2C 000EA598 KVideo_PutOverlayImage 17 2D 000EA598 KVideo_PutOverlayImage@24 55 2E 000E9D58 KVideo_Release 16 2F 000E9D58 KVideo_Release@0 54 30 000EA348 KVideo_Repaint 15 31 000EA348 KVideo_Repaint@0 53 32 000EA324 KVideo_Resize 14 33 000EA324 KVideo_Resize@0 52 34 000EA04C KVideo_SelectAudioStream 13 35 000EA04C KVideo_SelectAudioStream@4 51 36 000EA020 KVideo_SelectVideoStream 12 37 000EA020 KVideo_SelectVideoStream@4 50 38 000E9E2C KVideo_SetLAVFiltersFolder 11 39 000E9E2C KVideo_SetLAVFiltersFolder@4 49 3A 000E9F68 KVideo_SetPlaybackRate 10 3B 000E9F68 KVideo_SetPlaybackRate@4 48 3C 000E9F48 KVideo_SetSearchMode 9 3D 000E9F48 KVideo_SetSearchMode@4 47 3E 000EA468 KVideo_SetStreamPosition 8 3F 000EA468 KVideo_SetStreamPosition@8 46 40 000E9E00 KVideo_SetVideoRenderer 7 41 000E9E00 KVideo_SetVideoRenderer@4 45 42 000EA4DC KVideo_SetVolume 6 43 000EA4DC KVideo_SetVolume@4 44 44 000EA090 KVideo_ShowMediaInfo 5 45 000EA090 KVideo_ShowMediaInfo@0 43 46 000EA1C0 KVideo_ShowXySubFilterPropertyPage 4 47 000EA1C0 KVideo_ShowXySubFilterPropertyPage@4 42 48 000EA3D8 KVideo_Stop 3 49 000EA3D8 KVideo_Stop@0 41 4A 000EA630 KVideo_UpdateOverlayImage 2 4B 000EA630 KVideo_UpdateOverlayImage@4 40 4C 000EA11C KVideo_XySubFilterState 1 4D 000EA11C KVideo_XySubFilterState@8 gruss |
AW: 32 zu 64Bit DLL
Zitat:
Es wird aber die MadVr benötigt damit ein Video läuft. Aber zum kompilieren benötigt man die erst mal nicht. Die KVideoPlayer.dll mit Unterstrich ist die in 64BIT. Das Projekt läuft unter 32BIT. LIB in 32BIT ist dabei. Eine 64BIT LIB habe ich noch nicht erstellen können warum auch immer das fehl schlägt. Mein Delphi Projekt läuft ohne Probleme komplett in 64Bit inc. den ganzen Anhang (3rd Party DLL's). Die Exports in Delphi sehen so aus.
Delphi-Quellcode:
Zusätzlich nochmal die 64BIT unkomprimiert ansonsten kann man keine DEF erstellen. ;)
exports
KVideo_CloseFile, KVideo_CreateOverlayBaseImage, KVideo_DisplayModeChanged, KVideo_GetCapturedImage, KVideo_GetLastError, KVideo_GetMediaInfoText, KVideo_GetMediaProperty, KVideo_GetPlayerState, KVideo_GetStreamInfo, KVideo_GetStreamPosition, KVideo_GetVersion, KVideo_GetViewSize, KVideo_GetWorkingVR, KVideo_GetXySubFilter, KVideo_HasOverlayImage, KVideo_Initialize, KVideo_KeepAspectRatio, KVideo_MediaInfoServiceReady, KVideo_OpenFile2, KVideo_OpenFile, KVideo_Pause, KVideo_Play, KVideo_PutOverlayImage, KVideo_Release, KVideo_Repaint, KVideo_Resize, KVideo_SelectAudioStream, KVideo_SelectVideoStream, KVideo_SetLAVFiltersFolder, KVideo_SetPlaybackRate, KVideo_SetSearchMode, KVideo_SetStreamPosition, KVideo_SetVideoRenderer, KVideo_SetVolume, KVideo_ShowMediaInfo, KVideo_ShowXySubFilterPropertyPage, KVideo_Stop, KVideo_UpdateOverlayImage, KVideo_XySubFilterState, KVideo_CloseFile name 'KVideo_CloseFile@0', KVideo_CreateOverlayBaseImage name 'KVideo_CreateOverlayBaseImage@24', KVideo_DisplayModeChanged name 'KVideo_DisplayModeChanged@0', KVideo_GetCapturedImage name 'KVideo_GetCapturedImage@4', KVideo_GetLastError name 'KVideo_GetLastError@0', KVideo_GetMediaInfoText name 'KVideo_GetMediaInfoText@0', KVideo_GetMediaProperty name 'KVideo_GetMediaProperty@4', KVideo_GetPlayerState name 'KVideo_GetPlayerState@0', KVideo_GetStreamInfo name 'KVideo_GetStreamInfo@108', KVideo_GetStreamPosition name 'KVideo_GetStreamPosition@0', KVideo_GetVersion name 'KVideo_GetVersion@0', KVideo_GetViewSize name 'KVideo_GetViewSize@8', KVideo_GetWorkingVR name 'KVideo_GetWorkingVR@0', KVideo_GetXySubFilter name 'KVideo_GetXySubFilter@4', KVideo_HasOverlayImage name 'KVideo_HasOverlayImage@0', KVideo_Initialize name 'KVideo_Initialize@8', KVideo_KeepAspectRatio name 'KVideo_KeepAspectRatio@4', KVideo_MediaInfoServiceReady name 'KVideo_MediaInfoServiceReady@0', KVideo_OpenFile2 name 'KVideo_OpenFile2@8', KVideo_OpenFile name 'KVideo_OpenFile@4', KVideo_Pause name 'KVideo_Pause@0', KVideo_Play name 'KVideo_Play@0', KVideo_PutOverlayImage name 'KVideo_PutOverlayImage@24', KVideo_Release name 'KVideo_Release@0', KVideo_Repaint name 'KVideo_Repaint@0', KVideo_Resize name 'KVideo_Resize@0', KVideo_SelectAudioStream name 'KVideo_SelectAudioStream@4', KVideo_SelectVideoStream name 'KVideo_SelectVideoStream@4', KVideo_SetLAVFiltersFolder name 'KVideo_SetLAVFiltersFolder@4', KVideo_SetPlaybackRate name 'KVideo_SetPlaybackRate@4', KVideo_SetSearchMode name 'KVideo_SetSearchMode@4', KVideo_SetStreamPosition name 'KVideo_SetStreamPosition@8', KVideo_SetVideoRenderer name 'KVideo_SetVideoRenderer@4', KVideo_SetVolume name 'KVideo_SetVolume@4', KVideo_ShowMediaInfo name 'KVideo_ShowMediaInfo@0', KVideo_ShowXySubFilterPropertyPage name 'KVideo_ShowXySubFilterPropertyPage@4', KVideo_Stop name 'KVideo_Stop@0', KVideo_UpdateOverlayImage name 'KVideo_UpdateOverlayImage@4', KVideo_XySubFilterState name 'KVideo_XySubFilterState@8'; gruss |
AW: 32 zu 64Bit DLL
Liste der Anhänge anzeigen (Anzahl: 1)
Kein Plan, was du falsch machst, aber bei mir funktioniert es:
Code:
Damit habe ich dann die .def Datei erstellt (neues Textdokument mit EXPORTS in der ersten Zeile und darunter alle Symbole in jeweils einer eigenen Zeile aufgeführt) und schließlich:
dumpbin /exports _KVideoPlayer.dll
Microsoft (R) COFF/PE Dumper Version 14.10.25019.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file _KVideoPlayer.dll File Type: DLL Section contains the following exports for _KVideoPlayer.dll 00000000 characteristics 0 time date stamp 0.00 version 1 ordinal base 81 number of functions 81 number of names ordinal hint RVA name 81 0 0030AF20 KVideo_CloseFile 42 1 0030AF20 KVideo_CloseFile@0 80 2 0030B680 KVideo_CreateOverlayBaseImage ...
Code:
Könnte höchstens daran liegen, dass deine VS Toolchain noch aus Vorkriegszeiten stammt :mrgreen:
lib /MACHINE:X64 /DEF:_KVideoPlayer.def
Microsoft (R) Library Manager Version 14.10.25019.0 Copyright (C) Microsoft Corporation. All rights reserved. Bibliothek "_KVideoPlayer.lib" und Objekt "_KVideoPlayer.exp" werden erstellt. Habe die resultierende .lib mal angehangen. |
AW: 32 zu 64Bit DLL
Zitat:
|
AW: 32 zu 64Bit DLL
Zitat:
Ich kann jedoch nicht garantieren das die LIB.EXE die von VS2017 ist. (Eventuell wird die von VC (Aus Visual Studio 6 verwendet) Seltsam ist ja schon das meine Exports gar nicht mit dem Flag lib /MACHINE:X64 akzeptiert wird. Wirklich konfus. Danke für den Upload. Zitat:
Muss mal sehen wie ich den Pfad zur LIB ändern kann. EDIT: Dein Archiv scheint beschädigt zu sein. gruss |
AW: 32 zu 64Bit DLL
Zitat:
where lib.exe Dann wird dir angezeigt wo die gefunden wird. |
AW: 32 zu 64Bit DLL
Zitat:
gruss |
AW: 32 zu 64Bit DLL
Bei mir ist das:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
Code:
Wieso exportierts Du die function 2 mal? und weshalb mit den @.....??
KVideo_CloseFile name 'KVideo_CloseFile@0',
KVideo_CreateOverlayBaseImage name 'KVideo_CreateOverlayBaseImage@24', KVideo_DisplayModeChanged name 'KVideo_DisplayModeChanged@0', KVideo_GetCapturedImage name 'KVideo_GetCapturedImage@4', |
AW: 32 zu 64Bit DLL
Zitat:
Warum auch immer. Das "@....." sind die Bytes der jeweiligen Datentypen die in der exportierten Funktion enthalten sind. Bei 64Bit wie Zacherl sagt werden diese ignoriert. Siehe die Funktionen im C-Header. Wenn man das jedoch anders oder besser machen kann lerne ich gern dazu. Habe die Bat ausgeführt wird aber weiterhin die 6 Version von LIB\DUMPBI verwendet gruss |
AW: 32 zu 64Bit DLL
als *.cmd speichern
Code:
Und jetzt noch die def:
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
del *.lib del *.exp lib.exe /DEF:KVideoPlayer.def /MACHINE:X64 /OUT:KVideoPlayer_x64.lib lib.exe /DEF:KVideoPlayer.def /MACHINE:X86 /OUT:KVideoPlayer_x86.lib pause
Code:
Mit der erzeugten lib kompiliert VS problemlos
LIBRARY KVideoPlayer.DLL
EXPORTS KVideo_CloseFile KVideo_CreateOverlayBaseImage KVideo_DisplayModeChanged KVideo_GetCapturedImage KVideo_GetLastError KVideo_GetMediaInfoText KVideo_GetMediaProperty KVideo_GetPlayerState KVideo_GetStreamInfo KVideo_GetStreamPosition KVideo_GetVersion KVideo_GetViewSize KVideo_GetWorkingVR KVideo_GetXySubFilter KVideo_HasOverlayImage KVideo_Initialize KVideo_KeepAspectRatio KVideo_MediaInfoServiceReady KVideo_OpenFile2 KVideo_OpenFile KVideo_Pause KVideo_Play KVideo_PutOverlayImage KVideo_Release KVideo_Repaint KVideo_Resize KVideo_SelectAudioStream KVideo_SelectVideoStream KVideo_SetLAVFiltersFolder KVideo_SetPlaybackRate KVideo_SetSearchMode KVideo_SetStreamPosition KVideo_SetVideoRenderer KVideo_SetVolume KVideo_ShowMediaInfo KVideo_ShowXySubFilterPropertyPage KVideo_Stop KVideo_UpdateOverlayImage KVideo_XySubFilterState Deine zusätzlichen Exporte kannst Du aus der Dll rauswerfen. Die brauchst Du nicht. |
AW: 32 zu 64Bit DLL
Zitat:
Siehe. Zitat:
Zitat:
gruss |
AW: 32 zu 64Bit DLL
Die werden von importierten C++ Funktionen benötigt.
da aber die Funktionen in Deinem Header als extern "C" deklariert sind werden diese nicht benötigt. Das ganze nennt sich name mangling und ist c++ speziell C++ <> C, und Delphi exportiert die Funktionen analog zu C Immer wenn Der C++ Linker anmeckert das er irgend eine function name@xxx nicht findet fehlt ein extern "C" |
AW: 32 zu 64Bit DLL
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 47705 Je nach Betriebssystem sollte es trotzdem so ähnlich aussehen. In dem letzten Fenster schiebst du dann den Pfad zu VC++ 6.0 nach unten hinter den der neuen Version oder löschst den von VC++ 6.0 ganz. |
AW: 32 zu 64Bit DLL
Zitat:
Ich habe sie mal Auskommentiert. Mit deiner *.cmd etwas angepasst..
Code:
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
del *.lib del *.exp dumpbin /exports KVideoPlayer.dll >KVideoPlayer.def lib.exe /DEF:KVideoPlayer.def /MACHINE:X64 /OUT:KVideoPlayer_x64.lib lib.exe /DEF:KVideoPlayer.def /MACHINE:X86 /OUT:KVideoPlayer_x86.lib pause Zitat:
Die *.DEF scheint OK. Die LIB nicht die ist gerade mal 2 KB groß und VC meldet 13 Verweise nicht aufgelöst. Frustrierende das ganze ;) gruss |
AW: 32 zu 64Bit DLL
Emil hör doch auf die def immer automatisch erzeugen zu wollen.
Benutze die def die ich da oben angehängt hatte. Im Prinzip ist der Inhalt der *.def Datei einfach deine Exportsliste aus deinem Delphi Projekt. Einfach ohne Kommas :-) |
AW: 32 zu 64Bit DLL
Zitat:
Werde es nochmal versuchen. Danke! EDIT: Jetzt funktioniert das ganze. :) Dafür jetzt 3 ganze Seiten resultierend daraus weil mein Pfad zur LIB/DUMPBIN auf VS 6.0 gezeigt hat. Danke nochmal an alle die mitgeholfen haben. gruss |
AW: 32 zu 64Bit DLL
Ich hab jetzt soviel Arbeit mit der LIB gehabt aber vielleicht ist das doch der bessere weg.
gruss |
AW: 32 zu 64Bit DLL
Zitat:
Ich verstehe echt nicht was Du erreichen willst. Welches Problem soll denn gelöst werden? |
AW: 32 zu 64Bit DLL
Zitat:
Werde vielleicht das C++ Sample noch etwas ausbauen damit es so aussieht wie in Delphi um alle Funktionen testen zu können. Nur mit dem statischen laden ist man unabhängig von irgendwelchen Librarys Zudem muss man dann nicht die Lib's hin und her verschieben. (etwas unabhängiger halt) :) bzw. mehrere Builds erstellen. gruss |
AW: 32 zu 64Bit DLL
Hin und her schieben muss man aber auch mit den .lib Dateien eigentlich nichts. Es ist ganz normal, dass du einen Library-Path für 32-Bit und einen dedizierten Pfad für 64-Bit hast. Den kannst du für jede Konfiguration (32 Release, 32 Debug, 64 Release, 64 Debug) unabhängig voneinander einstellen.
So wie du es gemacht hast (.lib einfach ins Projekt reingezogen) macht man das normalerweise nicht. |
AW: 32 zu 64Bit DLL
Zitat:
gruss |
AW: 32 zu 64Bit DLL
Also ich bin echt kein Fan von dynamisch geladenen Dll's. Das einzige was ich mir da gefallen lasse ist ein Pluginsystem und da sollte 1!!! Aufruf reichen zum registrieren.
Bei statisch gelinkten Code greift einfach schon zur Compile oder besser gesagt Link-Time die Fehlerprüfung. Was in den Zusammenhang eigentlich immer geht ist delayed loading. Dann wird die Dll erst gezogen wenn Sie benutzt wird. Ist aber wahrscheinlich Geschmacksache. Aber ansonsten finde ich es gut wenn man über den Tellerrand schaut und auch mal etwas anderes probiert. In dem Sinne: Viel Erfolg und Spass mit Deinem Projekt Gruss |
AW: 32 zu 64Bit DLL
Wir benutzen für unsere Plugins Interfaces. Dadurch brauchen die einzelnen Plugins nicht die ganzen Funktionen einzeln exportieren und man kann via QueryInterface auch optionale Features sehr gut umsetzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 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