Error on Ubuntu 12.04 with InstantPlayer and FaceLab

If you are attempting to use InstantReality’s InstantPlayer as a 3D environment, and you are using Seeing Machines’s FaceLab as an eye tracker (via a FaceLab plugin), then you may have run into the “undefined symbol” problem while running InstantPlayer.

This is a hashed message that can be filtered through “c++filt” (pass the hashed string as an argument), which gives the following:

sm:eod::io::DatagramSocket(int,int,int)

That is, there is a problem during runtime that the above constructor cannot be found in the dynamic linked library, even if that library is in the correct path. The problem is that when the FaceLab node was compiled, it required the coredata sdk.h file, which pointed to the other .h files. More specifically, during compile the FaceLab plugin for InstantPlayer only had a definition of the constructor and not the constructor itself. During runtime, it never finds the constructor. A fix for this is to do the following.

1. Open and edit the coredata/include/eod/io/sdk.h file
2. Change the #include references for three .h files, namely:
datagramsocket.h
netinitialiser.h
inetaddress.h
3. Instead, use their .cpp counterparts:
i.e., #include “../src/eod/io/datagramsocket.cpp”
and do the same for the other two files.
4. Recompile the coredata (you may need to run “clean” first):
>make -f Makefile.linux32_ia32 all
This will make the new libraries where the constructor is accessible. This is our proposed fix until the Seeing Machines developers find a better solution.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>