Re: No dictionaries for std::complex

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Mon, 21 May 2012 13:41:25 -0500


Hi,

Humm ... yes if the autoloader is properly initialized it should load the complex dictionary automatically. Did you create a TApplication object in your standalone example?

Cheers,
Philippe.

On 5/21/12 11:27 AM, Marcelo Zimbres wrote:
> Thanks Philippe,
>
> it seems then, that I have the right implementation, but anyway, I thought this was fixed due to the following post:
> http://root.cern.ch/phpBB3/viewtopic.php?f=5&t=9618 <http://root.cern.ch/phpBB3/viewtopic.php?f=5&t=9618>, where you mention:
>
> "Hi,
>
> The ProcessLine call is only needed to work around a bug in the library autoloading setting affecting only the std::complex
> classes (This is fixed in the trunk, revision 36617 and up).
>
> Cheers,
> Philippe. "
>
> Maybe I misunderstood it? It is not clear to me when should I manually enforce a dictionary should be loaded.
>
> Cheers,
> Marcelo
>
>
>
> 2012/5/21 Philippe Canal <pcanal_at_fnal.gov <mailto:pcanal_at_fnal.gov>>
>
> > but if I try the same on a standalone application,
> > I get the error:
>
> In standalone application, you need to more configuration 'by hand'. In particular
> you may have to load more dictionary explicitly. For example:
>
>
> gROOT->ProcessLine("#include <complex>");
>
> will force the loading of the pre-canned std::complex dictionary.
>
> Cheers,
> Philippe.
>
>
> On 5/19/12 9:54 PM, Marcelo Zimbres wrote:
>> Hi Root experts,
>>
>> I have a class which inherits from TNamed, with a std::complex<double> data member.
>> When I compile it on Cint (.L TAlm.cxx+) and try to write an object of this class to
>> a root file, everything goes fine, but if I try the same on a standalone application,
>> I get the error:
>>
>> Error in <TAlm::fAlm streamer>: Missing the TClass object for complex<double>
>>
>> even though, my executable is linked to the library where the dictionary for TAlm should be
>> (I use rootcint to generate dictionaries in this case and put them in the library). To fix
>> the problem I am adding
>>
>> gROOT->ProcessLine("#include <complex>");
>>
>> in the main function, but I suppose this is not the right way to do it?
>> Why my program does find the dictionary for std::complex?
>>
>> Thanks in advance,
>> Marcelo
>>
>
Received on Mon May 21 2012 - 20:41:34 CEST

This archive was generated by hypermail 2.2.0 : Mon May 21 2012 - 23:50:02 CEST