Hi Matthew, You can create the dictionary in your case by either specifying the exact signature of the function: #pragma link C++ function MDL::WAB::cross_section(double*,double*); or simply removing the call. Just using the namespace statement should be enough. Philippe. > -----Original Message----- > From: owner-roottalk@pcroot.cern.ch > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Matthew D. Langston > Sent: Thursday, August 17, 2000 11:24 AM > To: Masaharu Goto > Cc: roottalk@pcroot.cern.ch > Subject: Re: [ROOT] RE:2.25.01: revisiting the "function in a n > > > Hi Masa, > > Adding the two namespace pragmas doesn't solve the problem, as CINT still > produces the same error message. So, it appears that it is still > impossible > to use compiled functions nested in namespaces from CINT. > > I have attached two simple files, "cross_section.hxx" and > "cross_section_LinkDef.h", which you can use to try the > experiment yourself. > If you type the following command, then you will get the following error > message: > > $ rootcint -f cross_sectionDict.cxx -c cross_section.hxx > cross_section_LinkDef.h > Note: link requested for unknown function MDL::WAB::cross_section > FILE:cross_section_LinkDef.h LINE:27 > Note: operator new() masked 1c > Note: operator delete() masked 1c > > Thank you for taking the time to look into this for me. If I can provide > any more information, please let me know. > > Regards, Matt > > ----- Original Message ----- > From: "Masaharu Goto" <MXJ02154@nifty.ne.jp> > To: <langston@SLAC.Stanford.EDU> > Cc: <roottalk@pcroot.cern.ch> > Sent: Thursday, August 17, 2000 5:53 AM > Subject: [ROOT] RE:2.25.01: revisiting the "function in a n > > > > Hello Matthew, > > > > I think this is fixed indeed. You need to add 2 more lines. > > > > #pragma link C++ namespace MDL; > > #pragma link C++ namespace MDL::WAB; > > > > Thank you > > Masaharu Goto > > > > > > >Date: Wed, 16 Aug 2000 20:52:01 -0700 > > >From: "Matthew D. Langston" <langston@SLAC.Stanford.EDU> > > >To: Masaharu Goto <MXJ02154@nifty.ne.jp> > > >Cc: roottalk <roottalk@pcroot.cern.ch> > > >Subject: 2.25.01: revisiting the "function in a namespace" problem > > > > > >Hi Masa, > > > > > >Back in the early part of April you were helping me with the problem of > how > > >to export a function, which is nested in a namespace, from a shared > library > > >so that it is available from the CINT interpreter. > > > > > >At the time, you said that the problem was fixed in CINT 5.14.26. > However, > > >the problem still exists in ROOT 2.25.01, which uses CINT 5.14.44. Did > the > > >namespace support get broken again somehow? > > > > > >I have attached the two e-mails from our previous discussion to remind > you > > >of what the problem was (it includes an example you can try to test the > bug > > >for yourself). FYI, all of these e-mails (and others from the thread) > are > > >in roottalk beginning on 2000.04.03 if you need to refer to > them for more > > >detail. > > > > > >Can you. or another knowledgeable CINT internals expert, help me with > this > > >problem please? Thank you. > > > > > >-- > > >Matthew D. Langston > > >SLD, Stanford Linear Accelerator Center > > >langston@SLAC.Stanford.EDU > > > > > > >----------------------------------------------------------------- > ---------- > -- > > - > > -- > > >Date: Mon, 03 Apr 2000 10:49:01 -0700 > > >From: "Matthew D. Langston" <langston@SLAC.Stanford.EDU> > > >Reply-To: langston@SLAC.Stanford.EDU > > >To: roottalk@pcroot.cern.ch > > >Subject: [ROOT] ROOT 2.23.12: Accessing functions in a namespace from a > > sharedlibrary > > > > > >How do I export a function, which is nested in a namespace, from a > > >shared library so that it is available from the CINT interpreter? > > > > > >Here is a concrete example of the function that I am trying to export > > >from a shared library to CINT. The function, named > "cross_section" (see > > >below), is nested inside of multiple namespaces. Here is the contents > > >of the header file which declares "cross_section": > > > > > > // cross_section.hxx > > > namespace MDL > > > { > > > namespace WAB > > > { > > > double cross_section( double* variables, double* parameters ); > > > } > > > } > > > > > > > > >Finally, here is the relevant part of the LinkDef.h file that I am > > >trying to use to export "cross_section" from the shared library to the > > >CINT interpreter: > > > > > > > > > // LinkDef.h > > > #pragma link C++ function MDL::WAB::cross_section; > > > > > > > > >This doesn't work, as evidenced by the following error message when I > > >try to run rootcint on these two files: > > > > > > > > > $ rootcint -f cross_sectionDict.cxx -c cross_section.hxx LinkDef.h > > > Note: link requested for unknown function MDL::WAB::cross_section > > >FILE:LinkDef.h LINE:21 > > > > > > > > >The pragma that I used (above) was the most straightforward method I > > >could think of to export the function "cross_section". Since it didn't > > >work, I also tried various combinations of the pragmas > documented in the > > >CINT Reference Manual (see http://root.cern.ch/root/Cint.phtml?ref and > > >search for "#pragma"). In particular, I tried various combinations of > > >the following two pragmas that seemed to have something to do with > > >namespaces: > > > > > > > > > #pragma link [C|C++|off] [class|struct|union|enum|namespace] [name]; > > > #pragma link [C|C++|off] defined_in [class/struct/namespace name]; > > > > > > > > >However, I could find no documentation on how to use these two specific > > >pragmas. Would someone knowledgeable please instruct us in the use of > > >these two pragmas? Would the use of some combination of these two > > >pragmas solve my problem with exporting the "cross_section" function > > >from a shared library to the CINT interpreter? > > > > > >I have attached both of the files "cross_section.hxx" and > "LinkDef.h" in > > >their entirety to this e-mail so that others could try and run the > > >command > > > > > > $ rootcint -f cross_sectionDict.cxx -c cross_section.hxx LinkDef.h > > > > > >on them. Please let us know if you can find the correct combination of > > >the CINT pragmas that allow rootcint to run properly on these > two files. > > >Thank you. > > > > > > > > >-- > > >Matthew D. Langston > > >SLD, Stanford Linear Accelerator Center > > >langston@SLAC.Stanford.EDU > > > > > > > > > >----------------------------------------------------------------- > ---------- > -- > > - > > -- > > >Date: Mon, 10 Apr 2000 14:31:28 -0700 > > >From: Masaharu Goto <MXJ02154@nifty.ne.jp> > > >To: langston@SLAC.Stanford.EDU > > >Cc: pcanal@fnal.gov, roottalk@pcroot.cern.ch > > >Subject: RE:Re: [ROOT] ROOT 2.23.12: Accessing funct > > > > > >Hello Matthew, > > > > > >I can not try it on ROOT because of some reason, but your code > works fine > > >on pure cint. After adding definition of cross_section() function, > > > > > > $ makecint -mk makefile -dl cross_section.dll -H cross_exction.hxx > > >LinkDef.h > > > $ make -f makefile > > > $ cint cross_section.dll > > > cint> p MDL::WAB::cross_section(0,0) > > > (double)0.000000 > > > cint> > > > > > >After writting above message, I noticed that you use 5.14.25. 'pragma > link > > >C++ namespace' is supported after 5.14.26. No wonder you can not do it. > > >In that case, try '#pragma link C++ class [namespacename];' instead. > > >There is no difference. If this doesn't work either , please download > > >newer version. > > > > > >Thank you > > >Masaharu Goto > > > > > > > > >> > > >>Hi Masaharu, > > >> > > >>I had already tried the two namespace pragmas that you suggested (I > > >>hinted at this in my original e-mail), and they don't work > either. So, > > >>the problem/question remains - how do I import a function in > a namespace > > >>even though I am already using the two pragmas that you recommend? I > > >>have attached the two files that are necessary to run the following > > >>command, which demonstrates the problem: > > >> > > >> $ rootcint -f cross_sectionDict.cxx -c cross_section.hxx LinkDef.h > > >> > > >>Were you actually able to verify that you can run the above command > > >>without problems? It definitely does not work with ROOT > 2.23.12 (which > > >>corresponds to CINT 5.14.25). > > >> > > >>Thank you for your help and expertise. > > >> > > >> > > > > > >
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:31 MET