Re: LNK4210 and .CRT section
"Vincent Fatica" wrote:
There are still two questions I'd like to have answers to. What
exactly was the VC7-VC8 change that made what was trivial (the
default even) so difficult (maybe impossible). Are what does
the .CRT section do (apparently nothing since I've zeroed its
eight bytes with no ill effect)?
I have made CRT-less DLL and I cannot see .CRT section. I have 5
sections in this DLL:
..data
..rdata
..reloc
..rsrc
..text
Regarding linking errors.
1. LNK2019 for `_chkstk' can be fixed in two ways:
a) By providing one's own implementation, which may be empty,
BTW:
extern "C" void _chkstk() {}
b) By linking with "chkstk.obj" file, which is found in
%VCINSTALLDIR%\lib folder.
2. LNK2019 for `_memset' can be fixed by providing one's own
implementation. There is an example of `memset' implementation in
"memset.asm" file, which is in the CRT sources directory. Note:
One must put the following pragma in all source files where
`memset' is used:
#pragma function(memset)
Without the above pragma compiler tries to use intrinsic
implementation for `memset', which requires CRT.
The conclusion is that starting with at least VS8 the coupling
between compiler and CRT is unbreakable. Compiler assumes that CRT
facilities are present when generates binary code. Probably there
is true CRT-less solution in DDK suite, but I didn't check this.
HTH
Alex