|
Reported by Marc Durdin; checked by Jordan Russell
The compiler directive {$objexportall on} in a unit (e.g. suspectunit.pas) causes the DCC32 link stage to fail, producing only a .dcu, but no .exe output and no error messages. The link statistics given will also be incorrect. However, if suspectunit.dcu already exists and is up to date, DCC32 will link correctly.
Reproducibility:
The problem occurs every time you compile a .PAS unit with the DCC32 commandline compiler. It does not occur if the corresponding .DCU is already up to date.
Steps to reproduce the problem:
- Create an empty project with a single unit as follows:
unit SuspectUnit;
interface
{$objexportall on}
implementation
end.
- Compile using DCC32
DCC32 suspect.dpr
No errors will be displayed, but the executable will not be created.
Reason:
No error messages are displayed, but the linker still refuses to link the units; it also displays incorrect code and data size statistics.
Operating systems:
The bug can be reproduced under WinNT4, Win2000, Win98. |