Code Yarns ‍👨‍💻
Tech BlogPersonal Blog

DepthSense Error: some dll files are missing

📅 2014-May-06 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ depthsense, error, softkinetic ⬩ 📚 Archive

Problem

We wanted to use the SoftKinetic DepthSense DS325 camera on a Ubuntu 14.04 system. We installed the DepthSense SDK from the file DepthSenseSDK-1.2.1-840-amd64-deb.run. We connected the camera to a USB port and ran DepthSense Viewer program: /opt/softkinetic/DepthSenseSDK/bin/DepthSenseViewer. It failed with this error:

=================================================================
DepthSenseServer log started Tue May  6 11:35:52 2014
=================================================================
Tue May  6 11:35:52 2014: [0000148e]: INFO:     DepthSenseServer version 1.2.1.840 linux64 gcc (Release)
Tue May  6 11:35:52 2014: [0000148e]: INFO:     logging to STDERR
Tue May  6 11:35:52 2014: [0000148f]: INFO:     using default connection timeout
Tue May  6 11:35:52 2014: [0000148f]: INFO:     listening on port 6909
Tue May  6 11:35:52 2014: [00001490]: WARNING:  Initialization Exception: no enumerator found, some dll files are missing
Tue May  6 11:35:52 2014: [00001490]: ERROR:    no enumerator found, some dll files are missing
Tue May  6 11:35:52 2014: [00001490]: INFO:     number of connections: 0
=================================================================

We got the same error on running my own program that was compiled and linked with the DepthSense libraries.

Solution

It looked like the DepthSense Viewer was looking for a DLL file and not finding it. We checked the shared library dependencies of the viewer and any other DepthSense library file it depended on using ldd:

$ ldd /opt/softkinetic/DepthSenseSDK/bin/DepthSenseViewer
libturbojpeg.so => /opt/softkinetic/DepthSenseSDK/bin/../lib/libturbojpeg.so (0x00007f967ffab000)
libDepthSense.so.1 => /opt/softkinetic/DepthSenseSDK/bin/../lib/libDepthSense.so.1 (0x00007f967f2cd000)
libDepthSensePlugins.so.1 => /opt/softkinetic/DepthSenseSDK/bin/../lib/libDepthSensePlugins.so.1 (0x00007f967f059000)

$ ldd /opt/softkinetic/DepthSenseSDK/lib/libturbojpeg.so

$ ldd /opt/softkinetic/DepthSenseSDK/lib/libDepthSense.so.1
libDepthSensePlugins.so.1 => /opt/softkinetic/DepthSenseSDK/lib/libDepthSensePlugins.so.1 (0x00007fa777dbf000)
libturbojpeg.so => /opt/softkinetic/DepthSenseSDK/lib/libturbojpeg.so (0x00007fa777717000)

$ ldd /opt/softkinetic/DepthSenseSDK/lib/libDepthSensePlugins.so.1

There seemed to be no missing DLL files that were required by these programs and libraries.

Not finding any solution, we decided to check the dependencies of all binaries and libraries that were in /opt/softkinetic/DepthSenseSDK/. Here we found a missing library:

$ ldd /opt/softkinetic/DepthSenseSDK/bin/Plugins/libDefaultEnumeratorImpl.so 
linux-vdso.so.1 =>  (0x00007ffffa76e000)
libDepthSensePlugins.so.1 => /opt/softkinetic/DepthSenseSDK/lib/libDepthSensePlugins.so.1 (0x00007f5c594be000)
libudev.so.0 => not found

So, libudev.so.0 was the missing DLL! 😊

We checked if there was any libudev.so file available on the system:

$ locate libudev.so
/lib/x86_64-linux-gnu/libudev.so.1
/lib/x86_64-linux-gnu/libudev.so.1.3.5

We just created a symbolic link for the required library file to the existing library file:

$ sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.3.5 /lib/x86_64-linux-gnu/libudev.so.0

On Ubuntu 15.04, the file is libudev.so.1.6.2, the rest of the command remains the same.

Once this was done, the DepthSense Viewer program worked fine! Also, all our programs that had linked with DepthSense libraries also worked. 😊


© 2022 Ashwin Nanjappa • All writing under CC BY-SA license • 🐘 @codeyarns@hachyderm.io📧