Hi, I can reproduce the problem. I am looking for a solution. Cheers, Philippe. -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Hajime Nanjyo Sent: Monday, January 26, 2004 9:07 PM To: roottalk@pcroot.cern.ch Subject: [ROOT] ROOT class with ifstream Dear Rooters, I forget the subject of the last mail for the ROOT class which have a member of ifstream. Best Regards, Hajime > Dear Rooters, > > I am suffering troubles when constructing my class > with ifstream for ROOT I/O. > > The shared library, libMyClass.so is successfully construced, but > it can't be linked to other objects and can't be loaded in ROOT(CINT). > > If the line, 'std::ifstream fi; //! excluded' > is commented out (at MyClass.h), all works fine. > > > Is there any idea to solve the problem? > > ///////////////////////////////////////////////// > The error outputs are... > > root [1] gSystem->Load("libMyClass") > dlopen error: /afs/cern.ch/user/n/nanjo/MyClassStreamer/./libMyClass.so: undefined symbol: _ZNSt8ios_baseC2ERKS_ > Load Error: Failed to load Dynamic link library /afs/cern.ch/user/n/nanjo/MyClassStreamer/./libMyClass.so > *** Interpreter error recovered *** > > or > > g++ `root-config --cflags` -c MyClass.C > rootcint -f MyClassDict.C -c MyClass.h MyClassLinkDef.h > g++ `root-config --cflags` -c MyClassDict.C > g++ -shared MyClass.o MyClassDict.o -o libMyClass.so > // Succeed > g++ `root-config --cflags` -c write.C > // OK > g++ write.o libMyClass.so `root-config --libs` -o write > // Fail > libMyClass.so: undefined reference to `std::ios_base::ios_base[not-in-charge](std::ios_base const&)' > collect2: ld returned 1 exit status > > > ///////////////////////////////////////////////// > My environment is... > > uname -a > Red Hat Linux release 7.3 (Valhalla) > Linux lxplus072 2.4.20-28.7.cernsmp #1 SMP Fri Jan 9 12:37:16 CET 2004 i686 unknown. > > g++ -v > Reading specs from /usr/local/gcc-alt-3.2/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs > Configured with: ./configure --prefix=/usr/local/gcc-alt-3.2 --enable-shared > Thread model: posix > gcc version 3.2 > > The ROOT is on afs at CERN. > ******************************************* > * * > * W E L C O M E to R O O T * > * * > * Version 3.10/02 16 December 2003 * > * * > * You are welcome to visit our Web site * > * http://root.cern.ch * > * * > ******************************************* > /////////////////////////////////////////////////// > > > > > My codes are as follows. > > /////////////////////////////////////////////////// > // > // MyClass.h > // > #ifndef MyClass_HH > #define MyClass_HH > #include <fstream> > > #include "TObject.h" > > class MyClass: public TObject > { > public: > MyClass(); > ~MyClass(); > void Set(int s); > > public: > int size; > std::ifstream fi; //! excluded > ClassDef(MyClass,1) //MyClass > }; > > #endif > /////////////////////////////////////////////////// > /////////////////////////////////////////////////// > /////////////////////////////////////////////////// > // > // MyClass.C > // > #include "MyClass.h" > #if !defined(__CINT__) > ClassImp(MyClass); > #endif > MyClass::MyClass() { > size=0; > } > > MyClass::~MyClass() { > ; > } > > > void MyClass::Set(int s) { > size=s; > } > > /////////////////////////////////////////////////// > // > // hadDataLinkDef.h > // > #ifdef __CINT__ > #pragma link off all globals; > #pragma link off all classes; > #pragma link off all functions; > #pragma link C++ class MyClass; > #endif > /////////////////////////////////////////////////// > /////////////////////////////////////////////////// > /////////////////////////////////////////////////// > // > // write.C > // > #include "TApplication.h" > #include "TFile.h" > #include "TTree.h" > #include "MyClass.h" > > int main(int argc,char** argv) > { > TApplication app("app", &argc, argv); > TFile *tf = new TFile("tmp.root","RECREATE"); > TTree *tree = new TTree("tree","tmp"); > > MyClass *data = new MyClass(); > tree->Branch("data","MyClass",&data); > > for (int i=0;i<5;++i) { > data->Set(i+1); > tree->Fill(); > } > > tf->Write(); > delete data; > > return 0; > } > /////////////////////////////////////////////////// > /////////////////////////////////////////////////// > /////////////////////////////////////////////////// > // > // compile script > // > rm *.o > rm *.so > rm MyClassDict.C > g++ `root-config --cflags` -c MyClass.C > rootcint -f MyClassDict.C -c MyClass.h MyClassLinkDef.h > g++ `root-config --cflags` -c MyClassDict.C > g++ -shared MyClass.o MyClassDict.o -o libMyClass.so > g++ `root-config --cflags` -c write.C > g++ write.o libMyClass.so `root-config --libs` -o write > ///////////////////////////////////////////////////
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET