Hi!
Wie ihr (natürlich
) wisst, ist MassiveUniverseOnline durch FreePascal mindestens auf Win32, Win64 und eventuell diversen *nixen verfügbar.
Da wir nun aber eine größere Anzahl externe Bibliotheken verwenden, wird das langsam echt unübersichtlich, diese immer in den passenden Ausführungen mitzuführen. Zum deployen geht das ja noch - da packt man halt einfach die richtigen ein. Aber zum Debuggen ist das einiger Aufwand, da wir auch da schon gemischt arbeiten.
Momentan habe ich das in den Headern so gelöst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| {$IFDEF Win32} sndfilelib='libsndfile-1_x86.dll'; {$ENDIF} {$IFDEF Win64} sndfilelib='libsndfile-1_x64.dll'; {$ENDIF} |
Nun ist das aber Overhead und auch nicht so wirklich toll, weil eben alle DLLs im Binary-Ordner durcheinanderfliegen. Was ich schön finden würde, wäre diese Struktur:
Nicht wirklich sinnvolle Lib-Auswahl...
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| MUO-Root ├───lib │ ├───i386 │ │ libogg-0.dll │ │ libsndfile-1.dll │ │ libvorbis-0.dll │ │ libvorbisfile-3.dll │ │ │ └───x86_64 │ libogg-0.dll │ libsndfile-1.dll │ libvorbis-0.dll │ libvorbisfile-3.dll │ ├───Application.exe |
Und dann würde ich einfach dem Windows-DLL-Loader sagen, er möchte die Dateien bitte aus dem passenden Pfad laden. Dieser Pfad kann ja durchaus fest eincompiliert sein. Wenn man alle DLLs dynamisch linken und selber laden würde wäre das ja kein Problem, ist aber einiger Header-Konvertierungs-Aufwand.
Im Grunde suche ich sowas wie ein reincompilierbares
LD_PATH=foo
Existiert sowas?
Viele Grüße,
Martok
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."