Altbekannt, da der
PE Loader abhängig von dem Modus still oder laut das ganze ausgibt. Aber anscheinend ist das damals bei mir wohl untergegangen.
Aber mal ein zusätzlicher Hinweis: DLLs die in MS Visual Studio C++ geschrieben wurden haben in ihrem Startup Code die Eigenheit die FPU
Exception Mask umzustellen. Dadurch werden illegale Operationen still und heimlich von der FPU behandelt, also es wird NaN und INF berechnet anstatt einer
Exception. Delphi wiederrum setzt Exceptions voraus und kommt dadurch spätestens bei irgendwelchen Fließkommaberechnungen in die Bedrängnis, wenn es von NaN oder INF etwas berechnen soll. Von daher sollte hier nochmals explizit
SafeLoadLibrary() erwähnt werden. Werden DLLs komplett statisch geladen kommt der Startup Code der App (somit Delphi der die Maske umsetzt) erst nach dem Startup Coder statisch gelinkten DLLs, da der
PE Loader diese Abhängigkeiten vorher auflösen muss. Wenn eine
DLL oder auch eine solche
DLL Kette aber dynamisch geladen wird hat man ein Problem. Von daher der Hinweis.
Sorry nochmals dass ich damals nicht auf die
WinAPI Funktion hingewiesen hatte.
@Chris.R: SafeLoadLibrary() wurde für die von mir beschriebene Gegebenheit eingeführt und mit Delphi 7 um den zweiten Parameter erweitert, da dieser zuvor nicht von außen steuerbar war.