Impact Acquire SDK C++
Runtime Requirements

This section lists hidden runtime requirements you should be aware of when building and shipping applications based on Impact Acquire. As the interface evolves there are sometimes changes that aren't too obvious. For example you might update Impact Acquire to a newer version on your build system and as long as no compilation issues arise and you don't use any new feature you might assume the binaries resulting from this build can be rolled out on systems running older versions of Impact Acquire. Although this in general works just fine sometimes it doesn't!

Whenever a feature your application is using states a certain version of Impact Acquire it has been introduced as a rule of thumb running that application on a system with an Impact Acquire installation that is older than that version it will NOT work. This is not always true and sometimes things might just work but the recommended approach here is to make sure or demand at least the version of Impact Acquire on the target system which is stated as a runtime requirement for the latest feature your application is using.

PropertyS::readBinary

Impact Acquire 2.32.0 did introduce a new, faster way to read binary data from a property. This however did require a new function exported from the mvDeviceManager library(OBJ_GetBinaryEx) which is not available in previous versions. This function is now used by the C++ interface internally. In order to allow writing code compatible with old installations the mvIMPACT::acquire::PropertyS::readBinary function has been given an additional bool parameter (boLegacyMode) which defaults to false in order to make use of the improved function by default. If you want to stay compatible with old installations you now need to pass true here so you actively need to change your code! Apart from that on Windows® you should probably use delay loading (see e.g. 'Linker Support for Delay-Loaded DLLs' in the MSDN or similar articles for details) in order to allow your application to start even if the new function is not part of the library found on the system. Otherwise you will most likely get an error at application start stating that ordinal number 177 is missing.