Tango DeviceProxy error:

When I write a simple program for accessing a device proxy in Cpp, like #include <tango.h>

#include <DeviceProxy.h>

using namespace Tango;
int main(unsigned int argc, char **argv)
{

// try
// {

//
// create a connection to a TANGO device
//

       DeviceProxy *device = new DeviceProxy("ttyS0/port/1");

//
// Ping the device
//

       device->ping();

ease: " << spr << endl;

// }
// catch (DevFailed &e)
// {
// Except::print_exception(e);
// exit(-1);
// }
}

When I compile it with command
$ g++ client.cpp -o first

It gives following error

client.cpp:(.text+0x2f): undefined reference to Tango::DeviceProxy::DeviceProxy(char const*, CORBA::ORB*)' /tmp/ccDn8erO.o: In function __static_initialization_and_destruction_0(int, int)‘:
client.cpp:(.text+0xa4): undefined reference to omni_thread::init_t::init_t()' client.cpp:(.text+0xb9): undefined reference to omni_thread::init_t::~init_t()’
client.cpp:(.text+0xcd): undefined reference to _omniFinalCleanup::_omniFinalCleanup()' client.cpp:(.text+0xe2): undefined reference to _omniFinalCleanup::~_omniFinalCleanup()’
collect2: error: ld returned 1 exit status

Please any bode help me to remove out this error
Thanks
Bublee

Hi Bublee,

it looks like your executable does not find the shared libraries. Can you do:

ldd first

It should show you if you have the correct libraries and your LD_LIBRARY_PATH is correctly setup. Which platform on you on and how did you install Tango?

Andy

Hi,

You should

include <tango.h>

instead of
#include <DeviceProxy.h>

You should also link with all the following libraries:
-ltango -lzmq -lomniORB4 -lomnithread -lCOS4 -lomniDynamic4

Do not forget to add something like:

-L<tango_home>/lib to also give the path where gcc will look for the libraries

Hoping this helps

Reynald