OT: konecne poriadny piatkovy flame na temu "to C or not to C"Was:Vyctovy typ v C

Slavomir Skopalik skopalik@elektlabs.cz
Pondělí Září 3 21:20:18 CEST 2007


Neda mi to, abych neprilil trochu horlaviny.

Tehle plati pro stare dobre DLL, kde opravdu
neni zadna informace o tom, co se ma volat.
Tohle ale jiz neplati v pripade COM objektu
(ulozenych prave v te dll) a uz vubec ne v pripade
.NET objektu (ulozenych take v dll).

Jinak polemizovat o DLL (tech starych dobrych) 
je podle mne mimo misu,
jelikoz zde musi kazdy jazyk (volal jsem dll
funkce snad z 20 "jazyku") ziskat prototypy funkci
od programatora.
Pekne na tom je to, ze ten program nemusi znat
v dobe prekladu jake dll bude vlastne volat (tzv. plugin).

To proc se tato debata vede je absence techto informaci
v *.obj souborech a nutnost vytvaret tuto definici samostatne.

V pascalu lze tyto obj soubory take pouzivat, ale je nutne
stejne jako v c (ci jinych jazycich) jim vytvorit "header".


Ukazka:

{$L obj\deflate.obj}
function deflateEnd(var strm: TZStreamRec): Integer; external;

Zbytek jiz byl zminen, netreba opakovat.

	Slavek

> 
> DLL je "run-time" modul, ktory sa natahuje do pamatoveho 
> priestoru programu pocas behu. A je jedno v akom prostredi je 
> ten program (a aj
> DLL) napisany, staci mu vediet natiahnut si DLL, poznat mena 
> funkcii a ich prototypy prave kvoli tomu, aby vedel, ake 
> parametre im ma predavat a aky vystup ocakavat. Format zapisu 
> prototypov je pritom logicky zavisly od pouziteho javyka. C 
> ma *.h, VB ma *.vbh atd. Na toto som sa pytal, ako sa daju 
> prototypy definovat pascalu? Z popisu kompletnych unitov mi 
> to zrejme nie je.




Další informace o konferenci Hw-list