> Hi rooters, > I am compling a dictionary with the recent development version > 2.22.04 of root on WinNT and the linker complains about > unresolved references(TBuffer::WriteVersion and TBuffer::ReadVersion). > The very same code compiles fine with > the previous release (2.21.08)! I can't figure out what the problem is. > (I made sure that only the correct version of all .dll's and .lib's are on > the compilers > search path and the /test examples complied and linked without problems... > I also checked if there are any changes in the makefile of the \test > examples but couldn't find any different > complier/linker settings compared to the predecessor version.). > > The error message displayed by VC5 is: > > TDbaTsDict.obj : error LNK2001: unresolved external symbol "public: void __thiscall TBuffer::WriteVersion(class TClass const *)" > (?WriteVersion@TBuffer@@QAEXPBVTClass@@@Z) > TDbaTsDict.obj : error LNK2001: unresolved external symbol "public: short __thiscall TBuffer::ReadVersion(void)" (?ReadVersion@TBuffer@@QAEFXZ) > libDbaTs.dll : fatal error LNK1120: 2 unresolved externals > > Any hint on what went wrong is greatly appreciated..... > This means your code does call (look for) methods Version_t ReadVersion(); void WriteVersion(const TClass *cl); Very this way these methods were defined with the previous version of ROOT. The new version has ANOTHER definition for those methods, namely: Version_t ReadVersion(UInt_t *start = 0, UInt_t *bcnt = 0); UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt = kFALSE); Apparently the OBJECT module of your class still contains an obsolete staff. The ONLY explanation that module WAS compiled with the OLD header files supplied. I paid attention you was talking about "lib" DLL's etc. but didn't mention ROOT header files. Please, check your env once again. Hope this helps, Valery
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:34 MET