Sinds Delphi 6 wordt crtl.dcu meegeleverd met Delphi.
Geen sources erbij, wat is het ?
Antwoord een complete C runtime library die gebruik maakt van Delphi's memory manage en rtl etc..
Vanaf Delphi 2005 kun je als je C obj's van bijvoorbeeld CBuilder wilt mee linken gewoon crtl in je uses clause zetten.
Vanaf Delphi 6 kan dat ook, maar alleen met een trucje:
In D6 en D7 is er een crtl.dcu afhankelijkheid van "midaslib.dcu", nou ja, kennelijk een bugje dat nooit is hersteld en waardoor er een internal error L3169 ontstaat in D7. Het is voldoende om een lege midaslib.pas aan te maken om toch de crtl mee te linken:
Je kunt nu bijvoorbeeld heel eenvoudig sqlite3.obj gecompileerd met een OMF compiler (zoals CBuilder) statisch linken en er mee werken.Code://deze code is niet nodig vanaf D2005 t/m XE2, alleen D6 en D7! unit midaslib; interface implementation end.
Jammer dat dit altijd zo slecht gedocumenteerd is geweest!
Er gaat een wereld aan C libraries voor je open zonder moeilijke linker stubs etc.
Het is ook een lesje van wat er kan gebeuren als je je uses clause niet opruimt!!! en zomaar DCU's uitlevert zonder te testen(in D6 en D7)
Bookmarks