[aspectc-user] Problem parsing CORBA template class.
Olaf Spinczyk
Olaf.Spinczyk at informatik.uni-erlangen.de
Tue Jul 27 09:24:14 CEST 2004
Hi Toni,
Toni SOUEID wrote:
> Hello Olaf,
>
> I managed to get my simple aspect (that prints a
> string on the screen after the execution of every
> method call of my corba servant) to get weaved against
> my code.
>
> I also managed to compile my resulting C++ file into
> an object file.
>
> Now i can't link my object files together because i
> get the following error :
>
> ---
> distributeur_impl.o: In function
> `_CORBA_Sequence<unsigned char>::freebuf(unsigned char
> *)':
> /local/SALOME/prerequis/omniORB-3.0.5/include/omniORB3/seqtemplates.h(.GM::gnu.linkonce.t.aspectof(void)+0x4):
> undefined reference to `GM::__instance'
> collect2: ld returned 1 exit status
> ---
>
> distributeur_impl.o is my object file
> and GM is the name of my aspect.
>
> Do you have any suggestions on how to solve this
> problem ?
>
> I will attach my simple application as soon as i clean
> the code up.
>
> Thanks
>
>
> --- Olaf Spinczyk
> <Olaf.Spinczyk at informatik.uni-erlangen.de> wrote:
>
>>Hi Toni,
>>
>>Toni SOUEID wrote:
>>
>>>Hello,
>>>
>>>I am trying to use AspectC++ to aspectualize some
>>
>>of
>>
>>>the code of a simple distributed application based
>>
>>on
>>
>>>CORBA (RedHat Linux 7.2, omniORB 3.0.5, and
>>
>>AspectC++
>>
>>>0.9pre1).
>>>
>>>I am trying to introduce aspects in my own code
>>
>>and
>>
>>>not at the CORBA ORB level.
>>>
>>>To parse my application code, ac++ has to parse a
>>
>>lot
>>
>>>of CORBA header files. With my simple application,
>>>ac++ can't continue to the end, but instead
>>
>>generates
>>
>>>a parsing error which is the following :
>>>
>>>
>>
>>/omniORB-3.0.5/include//omniORB3/seqtemplates.h:297:
>>
>>>error: invalid member declaration near token
>>>`_CORBA_Sequence'
>>>
>>>the code section pointed to by the error is the
>>>following :
>>>
>>>...
>>>template <class T>
>>>class _CORBA_Unbounded_Sequence : public
>>>_CORBA_Sequence<T> {
>>>public:
>>> typedef _CORBA_Sequence<T> BaseT ;
>>>...
>>>
>>>It seems to be a very simple usage of templates in
>>
>>C++
>>
>>>and I can't find the reason why ac++ can parse
>>
>>such
>>
>>>code.
>>>
>>>If would really appreciate if anyone has an idea
>>
>>about
>>
>>>this error and eventually how to override such
>>
>>code to
>>
>>>make ac++ work ?
>>>
>>>Thanks,
>>>
>>>Tony
>>
>>The code listed above is ok. It can be parsed by
>>ac++. There is probably
>>a problem with the symbol information ac++ collected
>>before coming to
>>these lines.
>>
>>To find out what's wrong we have to install the OMNI
>>ORB and try runing
>>ac++ with your code. Could you please send me your
>>"simple application"?
>>
>>Olaf
>>
>
>
>>ATTACHMENT part 2 application/x-pkcs7-signature
>
> name=smime.p7s
>
>
>
> =====
> Toni SOUEID
> Computer and Communications Engineer
> Maison du Liban
> 9E, boulevard Jourdan
> 75014 Paris
> France
> Tel : +33 1 44 16 27 88
> http://tonysoueid.multimania.com
I'm happy that you were more successful this time. Meanwhile I tried the
"Echo" example and that also worked.
The problem with GM::__instance is related to the so-called "link-once
code". It seems that you did not link your application with the
ac++-generated link-once code. Doing this is necessary, because the
link-once code contains the definitions of the aspect instances.
You can generate the link-once code with the -g option. Read the ac++
compiler manual for further details.
Best regards,
Olaf
More information about the aspectc-user
mailing list