08-03-2018 10:33 AM - edited 08-03-2018 10:36 AM
I know in the past updating DAQmx usually did not break backwards compatibility. However it seems any app built with DAQmx 17.6 won't work with earlier versions of the runtime (I'm not sure if 17.6 is where the behavior was introduced, we jumped from 16.1 to 17.6).
To test we used this simple app (the front panel screenshot shown is the result when running the 17.6-built version on a 16.0 runtime):
Front panel using 17.6-built .exe on 16.0 runtime system.
When built on a 16.0 system the app works on all of our test systems (using as early as DAQmx 9.7.5 runtime up to 17.6 runtime). The 17.6 version does not work on any system (up to 16.1 runtime) other than those with the 17.6 runtime. I have attached .exe versions built both on 16.0 and on 17.6 development PCs.
Is this the expected behavior? We have dozens of systems in the field with earlier versions of DAQmx runtime and it isn't feasible to update all of them. Our solution is to probably revert the DAQmx version on our build systems until this is sorted out.
Solved! Go to Solution.
08-03-2018 10:57 AM
It looks like some point between DAQmx 16.1 and DAQmx 17.6 the dll entry points were changed:
Create Channel dll entry point in DAQmx 16.1
Create Channel dll entry point in DAQmx 17.6
08-07-2018 09:25 AM
Can anybody respond? Just looking for some clarification about why this was done so I can feel better about it really... not sure what we're going to do about it yet.
08-07-2018 10:50 AM
Hi John,
Your solution (build the app with 16.0) is the correct one... built apps with a version of DAQmx are compatible with future DAQmx runtimes, but aren't guaranteed to work with previous ones, because newer versions of DAQmx can call into entrypoints that aren't present in older versions of DAQmx.
For the specific situation you've run into, there was a refactor that took place in 16.1 that necessitated a change in the entrypoints between LV and the underlying DAQmx DLL. That interface is generally considered "internal" (and the DAQmx API VIs will use the "newest" version), but we do preserve older entrypoints in that DLL due to the built-application case.