The EPICS build system can construct a dllPath.bat file in an ioc boot directory. This is very convenient when running IOCs built dynamically for Windows. An example of such a file is the one built in asyn/iocBoot/iocTest.
However, I think there is an issue with these files. Note that it puts the current PATH at the beginning of the new path, rather than at the end. This means that if the current path contains a DLL with the same name as a DLL created by
EPICS, it will use the one in the current path, not the one that EPICS created. It seems to me that this is the wrong thing to do, for several reasons:
What if the current path happens to contain, for example, a DLL called “com.dll” or “ca.dll” which is completely unrelated to EPICS. It will use the wrong DLL.
What if the current path contains an older version of one of the DLLs that EPICS built. This is what just happened to me. I have the Anaconda Python bin/ directory in my path, and it contains hdf5.dll. It is an older version of the
HDF5 library. EPICS areaDetector builds hdf5.dll using the latest code, actually patched beyond anything the HDF5 group had yet released. My IOC won’t run, because the old DLL does not contain the symbols added recently.
Are there any circumstances under which the current behavior would be desired?