Seite 2 von 2

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 22.11.2011, 01:02
von Chromanoid
ja hab ich dann auch gesehen. ein bisschen ähnlicher use case mehr nicht...
Wie erkennt loadlibrary ob es sich um eine dll oder exe handelt?

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 22.11.2011, 01:04
von dot
Chromanoid hat geschrieben:Wie erkennt loadlibrary ob es sich um eine dll oder exe handelt?
Na am PE Header ;)

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 24.11.2011, 00:24
von dot
Gerade fällt mir noch was ein: Mann müsste natürlich auch sicherstellen, dass die exe eine Relocate Table hat, sonst ist es von vornherein ein reines Glücksspiel.

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 24.11.2011, 03:59
von eXile
Daran hatte ich auch schon gedacht; zumindest deckt sich das mit der gerade entdeckten Tatsache, dass es unter x64 immer funktioniert (dort ist ASLR Pflicht, dementsprechend wird immer eine Relocation Table gebaut). Jetzt habe ich unter x86 versucht, das ganze mit /DYNAMICBASE zu linken. Leider ohne Erfolg. Aber ich schau mal weiter, denn das ist bisher die plausibelste Erklärung.

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 03.12.2011, 16:10
von Krishty
Mit statischen Daten unter x86 kriege ich es nicht hin. Schon der blanke Zugriff auf nicht-konstante statische Daten crasht mit einer Zugriffsverletzung, obwohl die zu ladende Exe relocatable kompiliert wurde. Verdammt.

Dann werde ich wohl die Zähne zusammenbeißen und eine DLL ausliefern müssen … :/

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 03.12.2011, 16:53
von Jörg
Kannst ja auch auf die .exe verzichten und statt dessen eine Batch-Datei mitliefern, die nur eine rundll32-Zeile enthaelt....

Re: [VC++] Exe zugleich als DLL nutzen?

Verfasst: 04.12.2011, 00:53
von Helmut
Ich verstehe das Problem irgendwie nicht. Mach doch einfach schnell ne neue Projektkonfiguration, exportiere die benötigten Funktionen und WinMain via Präprozessor und kompilier das Projekt als DLL. Dann gibste die DLL weiter und kannst die Konfig wieder löschen. Ne Sache von 10 Minuten.