Hi,

I encountered a strange problem. I am not yet sure what causes it, but I have a suspicion. Before I go all the way, of trying to prove the cause, and report it as a bug, let nme ask here if it may already be a knonw issue, or maybe is by design.

Normally if I change a unit (e.g. changes to the inteface of "unit Nested"), and then compile my project, fpc will recompile all other units that have a "uses Nested;" (new ppu files, new .o files)

In my case for some reason this does not happen, and all I get is an error from the linker at the very end: "Error: Undefined symbol: VMT_SYNGUTTER_TSYNEDITMARK" Btw, anyone, is there a way to make the linker tell me which file is requiring this symbol?

Anyway, this means some unit was compiled using the other unit declaring the symbol. Then when the symbol was removed, the unit was not recompiled. The package containing it was rebuild, so it must have been fpc believing that the file and all dependencies where unchanged; even so dependencies had changed)


I have a suspicion why FPC may not see the change in the underlying unit.

- TSYNEDITMARK is defined in "unit SynEditMarks"

- "unit SynEdit" has a forward declaration (in it's interface)
that is "unit SynEdit" uses SynEditMarks, and then has a "type TSYNEDITMARK = SynEditMarks.TSYNEDITMARK ;"

- Whatever unit causes the error, hust uses "Unit SynEdit", but not "unit SynEditMarks"

Should such a case be detected?


Best Regards/Thanks
Martin


_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to