Archived

This forum has been archived. Please start a new discussion on GitHub.

Errors in C++ auto generated code

Hi I have a simple slice file that looks something like this
module example {
struct Foo {
	float bar;
};

interface Server {
	void setFoo(Foo value);
};
};

I use slice2cpp to generate the appropriate code. When I try to build, though, I get errors on these generated lines
::IceInternal::Handle< ::IceDelegateM::Ice::Object>
IceProxy::example::Server::__createDelegateM()
{
    return ::IceInternal::Handle< ::IceDelegateM::Ice::Object>(new ::IceDelegateM::example::Server);
}

::IceInternal::Handle< ::IceDelegateD::Ice::Object>
IceProxy::example::Server::__createDelegateD()
{
    return ::IceInternal::Handle< ::IceDelegateD::Ice::Object>(new ::IceDelegateD::example::Server);
}

The specific error is
The type 'IceDelegateM::example::Server' must implement the inherited pure virtual method 'IceDelegate::Ice::Object::ice_isA'

Not sure what is going on here.

Thanks

Comments

  • Here is a more verbose output if it helps! Thanks.
    g++ -I/opt/Ice-3.4.2/include -I/Users/jonathan/libs/NiTE-2.0.0/Include -I/Users/jonathan/libs/OpenNI2/Include -O0 -g3 -Wall -c -fmessage-length=0 -o generated/skeleton.o ../generated/skeleton.cpp 
    g++ -L../libs/NiTE-2.0.0/Redist -L../libs/OpenNI2/Redist/OpenNI-2.1.0-x64/Tools -L/opt/Ice-3.4.2/lib -o 3DCameraSkeletalServer src/3DCameraSkeletalServer.o generated/skeleton.o -lOpenNI2 -lNiTE2 -lIce 
    Undefined symbols for architecture x86_64:
      "IceUtil::NullHandleException::NullHandleException(char const*, int)", referenced from:
          IceUtil::HandleBase<Ice::Communicator>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<IceProxy::Ice::Object>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<IceProxy::jibo::Server>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<Ice::Object>::throwNullHandleException(char const*, int) constin skeleton.o
          IceUtil::HandleBase<IceInternal::OutgoingAsync>::throwNullHandleException(char const*, int) constin skeleton.o
          IceUtil::HandleBase<IceProxy::jibo::Server>::throwNullHandleException(char const*, int) constin skeleton.o
      "IceUtil::NullHandleException::~NullHandleException()", referenced from:
          IceUtil::HandleBase<Ice::Communicator>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<IceProxy::Ice::Object>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<IceProxy::jibo::Server>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<Ice::Object>::throwNullHandleException(char const*, int) constin skeleton.o
          IceUtil::HandleBase<IceInternal::OutgoingAsync>::throwNullHandleException(char const*, int) constin skeleton.o
          IceUtil::HandleBase<IceProxy::jibo::Server>::throwNullHandleException(char const*, int) constin skeleton.o
      "IceUtil::ThreadSyscallException::ThreadSyscallException(char const*, int, int)", referenced from:
          IceUtil::Mutex::init(IceUtil::MutexProtocol)in 3DCameraSkeletalServer.o
          IceUtil::Mutex::init(IceUtil::MutexProtocol)in skeleton.o
      "IceUtil::getDefaultMutexProtocol()", referenced from:
          IceUtil::Mutex::Mutex()in 3DCameraSkeletalServer.o
          IceUtil::Mutex::Mutex()in skeleton.o
      "IceUtil::Cond::~Cond()", referenced from:
          IceUtil::Monitor<IceUtil::Mutex>::~Monitor()in skeleton.o
      "IceUtil::Shared::__setNoDelete(bool)", referenced from:
          vtable for Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          construction vtable for Ice::LocalObject-in-Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          vtable for IceDelegate::Ice::Objectin skeleton.o
          vtable for IceDelegate::jibo::Serverin skeleton.o
          vtable for jibo::Serverin skeleton.o
          construction vtable for Ice::Object-in-jibo::Serverin skeleton.o
          vtable for IceProxy::jibo::Serverin skeleton.o
          ...
      "IceUtil::Shared::__decRef()", referenced from:
          vtable for Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          construction vtable for Ice::LocalObject-in-Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          vtable for IceDelegate::Ice::Objectin skeleton.o
          vtable for IceDelegate::jibo::Serverin skeleton.o
          vtable for jibo::Serverin skeleton.o
          construction vtable for Ice::Object-in-jibo::Serverin skeleton.o
          vtable for IceProxy::jibo::Serverin skeleton.o
          ...
      "IceUtil::Shared::__incRef()", referenced from:
          vtable for Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          construction vtable for Ice::LocalObject-in-Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          vtable for IceDelegate::Ice::Objectin skeleton.o
          vtable for IceDelegate::jibo::Serverin skeleton.o
          vtable for jibo::Serverin skeleton.o
          construction vtable for Ice::Object-in-jibo::Serverin skeleton.o
          vtable for IceProxy::jibo::Serverin skeleton.o
          ...
      "IceUtil::Shared::Shared()", referenced from:
          Ice::ConnectionInfo::ConnectionInfo()in 3DCameraSkeletalServer.o
          IceProxy::Ice::Object::Object()in 3DCameraSkeletalServer.o
          IceDelegate::Ice::Object::Object()in skeleton.o
          IceProxy::Ice::Object::Object()in skeleton.o
      "IceUtil::Exception::Exception()", referenced from:
          Ice::UserException::UserException()in 3DCameraSkeletalServer.o
      "IceUtil::Exception::~Exception()", referenced from:
          IceUtil::SyscallException::~SyscallException()in 3DCameraSkeletalServer.o
          IceUtil::SyscallException::~SyscallException()in skeleton.o
      "IceUtil::Shared::__getRef() const", referenced from:
          vtable for Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          construction vtable for Ice::LocalObject-in-Ice::ConnectionInfoin 3DCameraSkeletalServer.o
          vtable for IceDelegate::Ice::Objectin skeleton.o
          vtable for IceDelegate::jibo::Serverin skeleton.o
          vtable for jibo::Serverin skeleton.o
          construction vtable for Ice::Object-in-jibo::Serverin skeleton.o
          vtable for IceProxy::jibo::Serverin skeleton.o
          ...
      "typeinfo for IceUtil::NullHandleException", referenced from:
          IceUtil::HandleBase<Ice::Communicator>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<IceProxy::Ice::Object>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<IceProxy::jibo::Server>::throwNullHandleException(char const*, int) constin 3DCameraSkeletalServer.o
          IceUtil::HandleBase<Ice::Object>::throwNullHandleException(char const*, int) constin skeleton.o
          IceUtil::HandleBase<IceInternal::OutgoingAsync>::throwNullHandleException(char const*, int) constin skeleton.o
          IceUtil::HandleBase<IceProxy::jibo::Server>::throwNullHandleException(char const*, int) constin skeleton.o
      "typeinfo for IceUtil::ThreadSyscallException", referenced from:
          IceUtil::Mutex::init(IceUtil::MutexProtocol)in 3DCameraSkeletalServer.o
          IceUtil::Mutex::init(IceUtil::MutexProtocol)in skeleton.o
      "typeinfo for IceUtil::Shared", referenced from:
          typeinfo for IceDelegate::Ice::Objectin skeleton.o
      "vtable for IceUtil::SyscallException", referenced from:
          IceUtil::SyscallException::~SyscallException()in 3DCameraSkeletalServer.o
          IceUtil::SyscallException::~SyscallException()in skeleton.o
      NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
      "vtable for IceUtil::ThreadSyscallException", referenced from:
          IceUtil::ThreadSyscallException::~ThreadSyscallException()in 3DCameraSkeletalServer.o
          IceUtil::ThreadSyscallException::~ThreadSyscallException()in skeleton.o
      NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
      "vtable for IceUtil::Shared", referenced from:
          IceUtil::Shared::~Shared()in 3DCameraSkeletalServer.o
          IceUtil::Shared::~Shared()in skeleton.o
      NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
      "vtable for IceUtil::Exception", referenced from:
          IceUtil::Exception::Exception(IceUtil::Exception const&)in skeleton.o
      NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
    ld: symbol(s) not found for architecture x86_64
    collect2: ld returned 1 exit status
    
  • bernard
    bernard Jupiter, FL
    Hi Jonathan,

    It looks like you're building for x86_64 but linking with Ice libraries that don't contain x86_64 symbols.

    Which OS are you using? OS X? Are you using the Ice binary distribution or your own build?

    Cheers,
    Bernard
  • Thanks for the quick reply. I believe I downloaded the binaries for Mac OS X. I'll try building from source and seeing if that helps.
  • benoit
    benoit Rennes, France
    Actually, it looks like you're missing the "-lIceUtil" option on the linker command, try adding it, it should fix the problem! The binaries from the Ice 3.4.2 distribution are fat binaries, they contain both the i386 and the x86_64 architectures.

    Cheers,
    Benoit.
  • That worked! Thanks so much!