On Friday 27 April 2012 05:10:39 Robert Schweikert wrote:
Here is the problem:
simpleValueFromXpdfObj template is declared in src/kernel/cobjectsimple.h. This header file is included in the src/kernel/cobject2string.cc file and thus when this file gets compiled the compiler sees the declaration and knows everything it needs to know to be happy. However, the implementation of the template is in the file src/kernel/cobject2xpdf.cc. The result is that the compiler never sees the use and the implementation of the template at the same time and thus the template is never instantiated. No template instantiation => not entry in the object table. Therefore, when the linker gets around to stich everything together there is only the undefined symbol (location of the call) and no definition.
Once you insert an instantiator into cobject2xpdf.cc the problem is resolved as the compiler will now instantiate the template and the linker can find the definition when stitching things together.
You have a pending SR 115767 which fixes the error.
Thank you very much! Unfortunately this kind of problems is much more difficult to understand than just simply adding "this" in the code :-( In all previous instances when I received a linker error it meant some file or library was not accessible to the linker. I never seen the compiler create a broken module that could not be linked anyhow. -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org