Impact Acquire SDK .NET
No USB3 Vision™ Devices Are Detected / 3rd Party Products Also Using libusb Cannot Be Used Together With The mvGenTLProducer Library

Symptoms

When working with USB3 Vision™ compliant devices thus when having the Impact Acquire package installed on a Linux system OR when using the GenICam™ GenTL compliant producer mvGenTLProducer.cti (libmvGenTLProducer.so) on a Linux system together with a 3rd party software package (e.g. OpenCV) also using libusb under the hood the application either crashes or devices cannot be used.

Cause

This problem may occur when the following conditions are true:

  • Your program uses mvGenTLProducer.cti
  • Your program uses any 3rd party software package that is dynamically linked with the libusb of the system it is running on and this version differs from the one shipped with Impact Acquire (in $MVIMPACT_ACQUIRE_DIR/Toolkits/libusb*)

Resolution

This is caused by compatibility issues within libusb. As on a Linux system there cannot be mixed versions of a shared object dynamically loaded into the same process the library loaded first is used and therefore depending on the load order of the libraries various things can happen. In order to overcome this problem Impact Acquire can be told to favour the systems version of libusb by defining an environment variable MVIMPACT_ACQUIRE_FAVOUR_SYSTEMS_LIBUSB before instantiating the Impact Acquire device manager.

Note
The value of this environment variable is don't care! It just needs to be defined.
Since Impact Acquire version 3.1.0, libusb is shipped as part of the Impact Acquire installation package anymore. Instead, the host system's libusb will be used when accessing USB cameras. Thus the environment variable MVIMPACT_ACQUIRE_FAVOUR_SYSTEMS_LIBUSB is no longer needed.