Seite 1 von 2

Selbsterstellte DLLs mitkompilliert?

Verfasst: 03.09.2013 11:58
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?

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 03.09.2013 17:09
von _JON_
Was hast Du den unter "Compiler Options" eingetragen?

Wenn deine dll mit kompiliert werden soll, musst Du "Build all Targets" wählen.

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 03.09.2013 19:23
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?

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 03.09.2013 19:42
von PMV
Musst nen Projekt anlegen und mehrere Ziele erstellen.

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 04.09.2013 11:12
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?

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 04.09.2013 12:15
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.

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 05.09.2013 11:09
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?

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 05.09.2013 11:18
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

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 06.09.2013 10:20
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

Re: Selbsterstellte DLLs mitkompilliert?

Verfasst: 06.09.2013 19:15
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? ^^