[Dcmlib] Strange error when using gdcm 1.3 in MS programs

Vincent Daanen vincent.daanen at imag.fr
Tue Feb 28 09:52:51 CET 2006


Hi gdcm-users,

I wrote a small piece of code which is running perfectly in a small test 
program.
When integrating this code in a 'big' MFC M$ application, the appli 
terminated immediatly with this strange error causes :

    std::operator<<(std::basic_ostream<char,std::char_traits<char> > & 
{...}, const char * 0x00ceb46c) line 291 + 3 bytes

I trace in the application and this is what I point out :

------------------------------------------------------------------------------------------------------------------------------------------
in gdcmGlobal.cxx :

Global Glob;

* Global::Global()
 {
     .....
     Dicts     = DictSet::New();
     ...
 }
       
* static DictSet *New() {return new DictSet();}

* Dicts[PUB_DICT_NAME] = Dict::New(pubDictFile);
* static Dict *New(std::string const &filename) {return new Dict(filename);}

* in Dict::Dict(std::string const &filename)
      DoTheLoadingJob(from);

* in void Dict::DoTheLoadingJob(std::ifstream &from)
      newEntry = DictEntry::New(group, elem, vr, vm, name);

*in bool Dict::AddEntry(DictEntry *newEntry)
   if ( KeyHt.count(key) == 1 )
   {
      gdcmErrorMacro( "Already present:" << key );          <-----
      return false;
   }

in * void Debug::SendToOutput(unsigned int type,std::string const 
&msg,const Base *object)
   if(!executed)
       GetOutput() << Command::GetCommandAsString(type) << ": " << msg;
------------------------------------------------------------------------------------------------------------------------------------------

The error seems to come from the latest line. I do not understand what 
the hell !
Can someone help me ??

Thanks

 Vincent


>> Hi all,
>>
>> I must read a RTDOSE file and have to parse a DS to get the 
>> informations.
>> Since this seems to be something that happens often when reading 
>> dicom fioles, is there a function (or a method in a class) that 
>> parses DS in a double * or a std::vector <double> or anything else ?
>
> Hi Vincent,
>
>     You are reaching the limits of gdcm, unfortunately. I still 
> believe that you can read those, but expect some pain :).
>     There is one hidden `feature` that prevent people from loading 
> long binary stream, so don't be suprised if after loading you DICOM DS 
> you cannot see the RTDOSE Tag. Have a look at
> SetMaxSizeLoadEntry for more info. There is a thin layer exposed in 
> ITK for that. I still believe that in the end you should do what you 
> want because I know that people are reading 0029-1010 properly, so as 
> long as you know which field to load you should be fine.
>
> Good luck, keep posting,
> Mathieu
>


-- 
Vincent Daanen, PhD
Research Engineer, Post-Doctoral Position
Laboratoire TIMC/IMAG (Univ. Joseph Fourier - CNRS UMR 5525)
Equipe GMCAO
Institut d'Ingénierie de l'Information de Santé (IN3S)
Faculté de Médecine - 38706 La Tronche cedex - France
Tel: +33 (0)4 56 52 00 54 - Fax: +33 (0)4 56 52 00 55
Vincent.Daanen at imag.fr

"Les problèmes ne peuvent être résolus par
ceux dont l'horizon se limite aux réalités 
quotidiennes, mais par ceux qui rêvent de 
choses qui n'ont jamais existées et qui se 
disent : Pourquoi Pas ?"

J-F Kennedy, 1963.




More information about the Dcmlib mailing list