Tachchen,
beim Annäherungsversuch an Module stoße ich gerade wieder auf ein Problem in Verbidung mit der Erstellung einer DLL.
Ein Include ist aktuell so aufgebaut, dass es auch als DLL kompiliert werden kann. Ähnlich wie bei Modulen sind dann natürlich nur die Proceduren aufrufbar, die ein ProcedureDLL haben. Allerdings meckern nun Module das keine ProcedureDLL vorkommen darf.
Wie kann ich nun beides unter ein Hut bringen, also ein Modul erstellen und auch die Erstellung einer DLL ermöglichen?
Module und ProcedureDLL
Module und ProcedureDLL
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Module und ProcedureDLL
Solange nur innerhalb von Modulen "angemeckert" wird, sollte es doch kein Problem darstellen.
Ich meine sowas sollte doch funktionieren :
Oder ist das am Ziel vorbeigeschossen ?
Ich meine sowas sollte doch funktionieren :
Code: Alles auswählen
ProcedureDLL Foo(abc)
d = abc + MyMod::Modul(abc)
ProcedureReturn d
EndProcedure
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Module und ProcedureDLL
Diese beiden Konzepte passen leider in PB momentan nicht gut zusammen.STARGÅTE hat geschrieben:Wie kann ich nun beides unter ein Hut bringen, also ein Modul erstellen und auch die Erstellung einer DLL ermöglichen?

Du kannst das mit Hilfe von bedingter Compilierung machen, etwa so:
Code: Alles auswählen
#CreateDLL = #True
CompilerIf #CreateDLL = #False
DeclareModule Foo
; ...
EndDeclareModule
Module Foo
CompilerEndIf
CompilerIf #CreateDLL = #False
Procedure Bar()
CompilerElse
ProcedureDLL Bar()
CompilerEndIf
; ...
EndProcedure
CompilerIf #CreateDLL = #False
EndModule
CompilerEndIf
Oder Du schreibst erst das Modul, und schreibst dann die benötigten ProcedureDLLs zusätzlich außerhalb des Moduls als Wrapper für die öffentlichen Modul-Funktionen. Auch nicht schön.
Ich würde es sehr begrüßen, wenn PBs Möglichkeiten zur DLL-Erzeugung an das neue Modul-Konzept angepasst würden, z.B. indem man ein bestehendes Modul nehmen kann, und dann statt "DeclareModule" "DeclareDLLModule" schreibt.