[omniORB] Another IDL compiler output problem for VC++ in recent snapshots

Carl Thompson cet@carlthompson.net
Mon, 05 Nov 2001 14:45:04 -0800


The problem seems to be the IDL compiler is generating _raise() methods with 
the wrong signature.  It is generating

    void _raise();

but should be generating

    void _raise() const;

The strange thing is that when GCC is used it generates the correct code...

Carl Thompson

Carl Thompson wrote:

> Hello,
> 
>      I am trying to compile code generated by omniidl with VC++6sp5 but 
> I am getting errors related to exception class generation and use  It 
> works fine with gcc and with older snapshots so I think this is a VC++ 
> incompatibility introduced in recent snapshots.  I am using 20011031.  
> The relevant sections of the IDL are:
> 
> module LIBSAMS {
> interface Daemon : Component {
>   exception NoSuchMStore {};
>   exception MSConfExists {};
>   exception NoSuchMSConf {};
>   exception UserExists {};
>   exception NoSuchUser {};
>   exception NoSuchAgent {};
> 
>   ...
> 
> };
> 
> interface Auth {
>   exception InvalidLogin {
>     enum ReasonType { UNKNOWN, USERID_TOO_LONG } reason;
>   };
> 
>   ...
> 
> };
> 
> };
> 
> 
> The errors I'm getting are:
> 
> cl -c -O2  -MT -TP -GX -nologo -D__WIN32__ -D__x86__ -D__NT__ 
> -D__OSVERSION__=4 -D__OMNIORB4__ -I../../../../omniORB/work/src/include 
> -I../../../../omniORB/work/src/include/omniORB4 daemon_ui_impl.cc 
> -Foobj/daemon_ui_impl.obj
> daemon_ui_impl.cc
> daemon_ui_impl.cc(159) : error C2259: 'NoSuchUser' : cannot instantiate 
> abstract class due to following members:
>         corba/ui.h(299) : see declaration of 'NoSuchUser'
> daemon_ui_impl.cc(159) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(159) : error C2259: 'NoSuchUser' : cannot instantiate 
> abstract class due to following members:
>         corba/ui.h(299) : see declaration of 'NoSuchUser'
> daemon_ui_impl.cc(159) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(176) : error C2259: 'UserExists' : cannot instantiate 
> abstract class due to following members:
>         corba/ui.h(261) : see declaration of 'UserExists'
> daemon_ui_impl.cc(176) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(176) : error C2259: 'UserExists' : cannot instantiate 
> abstract class due to following members:
>         corba/ui.h(261) : see declaration of 'UserExists'
> daemon_ui_impl.cc(176) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(228) : error C2259: 'NoSuchAgent' : cannot instantiate 
> abstract class due to following members:
>         corba/ui.h(337) : see declaration of 'NoSuchAgent'
> daemon_ui_impl.cc(228) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(228) : error C2259: 'NoSuchAgent' : cannot instantiate 
> abstract class due to following members:
>         corba/ui.h(337) : see declaration of 'NoSuchAgent'
> daemon_ui_impl.cc(228) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(239) : error C2259: 'InvalidLogin' : cannot 
> instantiate abstract class due to following members:
>         corba/ui.h(502) : see declaration of 'InvalidLogin'
> daemon_ui_impl.cc(239) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(239) : error C2259: 'InvalidLogin' : cannot 
> instantiate abstract class due to following members:
>         corba/ui.h(502) : see declaration of 'InvalidLogin'
> daemon_ui_impl.cc(239) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> daemon_ui_impl.cc(247) : error C2259: 'InvalidLogin' : cannot 
> instantiate abstract class due to following members:
>         corba/ui.h(502) : see declaration of 'InvalidLogin'
> daemon_ui_impl.cc(247) : warning C4259: 'void __thiscall 
> CORBA::Exception::_raise(void) const' : pure virtual function was not 
> defined
>         
> ../../../../omniORB/work/src/include\omniORB4/CORBA_Exception.h(57) : 
> see declaration of '_raise'
> 
> Thanks,
> Carl Thompson
> 
> 
>