Selbsterstellte DLLs mitkompilliert?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Selbsterstellte DLLs mitkompilliert?

Beitrag von Chimorin »

Heyho,

ich habe eine Hand voll Funktionen, die 2 Programme von mir benötigen. Ich dachte erst daran, dass ich diese ja als extra PB-File in beiden Programmen inkludieren kann. Ok, hab ich so gemacht, funktioniert ja auch einwandfrei.
Jetzt möchte ich aber aus Stil, dass diese PB-Files eigenständige DLLs werden (Wie gesagt, weil ich das auch mal ausprobieren will und sowas einfach Stil hat ;) ).
So viel umschreiben muss man ja nicht, nur ein Problem meine ich zu sehen:
Wenn ich mein Projekt nun zum Testen kompilliere, wird dann jede DLL auch extra dafür kompilliert oder muss ich das manuell machen?
Bild

- formerly known as Bananenfreak -
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von _JON_ »

Was hast Du den unter "Compiler Options" eingetragen?

Wenn deine dll mit kompiliert werden soll, musst Du "Build all Targets" wählen.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von Chimorin »

Öh, die Compiler Optionen sehe ich, aber "Build all Targets" sehe ich nicht (PB 5.11). Muss ich bei den DLL-Codes angeben, dass mein HauptCode eben dieser ist?!

EDIT: Vergiss es, habs gefunden. Danke :)

EDIT 2: Es ist ausgegraut? Muss ich jetzt wie oben beschrieben eben die Codes dem HauptCode "hinzufügen?
Bild

- formerly known as Bananenfreak -
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von PMV »

Musst nen Projekt anlegen und mehrere Ziele erstellen.
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von Chimorin »

Ok. Bevor ich das aber mache, würde ich gerne wissen, ob ich aus einer DLL heraus auch Funktionen aufrufen kann, die einen Import im Hauptprogramm benötigen (Oder importiere ich das dann einfach in der DLL?!)

Mir geht es um die Terrainfunktionen von OGRE.

EDIT: Das Gleiche für selbst definierte Konstanten. Auch importieren?
Bild

- formerly known as Bananenfreak -
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von ts-soft »

Bananenfreak hat geschrieben:EDIT: Das Gleiche für selbst definierte Konstanten. Auch importieren?
Da Du in PB keine Konstanten exportieren kannst, sollte ein Import auch nicht möglich sein :wink:
Einfach alle deklarationen von Konstanten usw. in einer gemeinsamen Common-Datei einfügen.

Ich weiß nicht ob ich die erste Frage richtig interpretiere, aber eine Executable in PB kann keine Funktionen
exportieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von Chimorin »

Äh, nein. Ich habe mich wohl etwas vage ausgedrückt. Was ich meine, ist, ich habe 5 PB-Files.
1. Das Spiel
2. Der Mapeditor
3. Funktionen, die beide Programme benutzen (Soll eine DLL werden)
4. Konstanten, die beide Programme benutzen
5. Strukturen, die beide Programme benutzen

Die "geteilten" Funktionen verwenden zudem auch die Konstanten und Strukturen. Muss ich diese dann einbinden (IncludeFile)? Und wo? Ich habe in der Hilfe gelesen, dass alles in die Proceduren muss, weil der Rest nicht kompiliert wird oder sowas.

Die "geteilten" Funktionen beinhalten selber wiederum Funktionen, welche erst durch Einbindung der "Engine3D.dll" und Öffnung eines Screens funktionieren. Kann ich diese auch in einer DLL benutzen? Muss ich in der DLL dann auch die Engine3D.dll einbinden?
Bild

- formerly known as Bananenfreak -
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von ts-soft »

Code ausserhalb von Proceduren macht in einer DLL kein Sinn, aber die Deklaration von Konstanten, Variablen, Strukturen und Listen
schon :wink:

Bei Deinem MapEditor definierst Du ja eine andere Startdatei, als in der DLL. Includieren sollten beide, was sie gemeinsam benötigen.
Also im Grunde ganz einfach und selbsterklärend. Für den Trigger der DLL wird entsprechend eine andere Startdatei angegeben.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von Chimorin »

Ok, gut, ich werde das mal ausprobieren. Vielen Dank für die Hilfe :bounce:

EDIT: Wenn ich das so sagen darf: Ach du heilige Scheiße. PB hat ja noch viel mehr Funktionen, als ich vorher gedacht habe...

Projekte sind mir neu und auch alles Andere :D
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Selbsterstellte DLLs mitkompilliert?

Beitrag von Chimorin »

Sooooo... das Kompilieren von Programm und DLL geht, aber beim Testen (Kompilieren und Starten) wird wohl immer noch nur mein Hauptprogramm kompiliert.
Meine DLL wird nicht mal fertig kompiliert gefunden, obwohl diese im Verzeichnis des Kompilats liegen müsste?!

Was funktioniert ist, dass das Exe. in dem Verzeichnis erscheinen soll, in dem auch die zugehörige PB-Datei liegt. Ich möchte aber, dass die TempExe in einem Verzeichnis liegt, das ich definiert habe (Dafür ist doch auch "Aktuelles Verzeichnis" bei "Executable starten mit:"?!)

Kann mir jemand helfen und sagen, was ich nun wieder falsch gemacht habe? ^^
Bild

- formerly known as Bananenfreak -
Antworten