2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 <2017> 2018 2019 2020 2021 2022 2023 2024 | Index | 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 <2017> 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | dllPath.bat problem |
From: | Mark Rivers <[email protected]> |
To: | EPICS Core Talk <[email protected]> |
Date: | Sat, 14 Jan 2017 23:14:07 +0000 |
Folks, 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. corvette:asyn/iocBoot/ioctest>more dllPath.bat @ECHO OFF PATH %PATH%;/home/epics/support/asyn-4-31/bin/linux-x86_64;/corvette/home/epics/support/seq-2-2-4/bin/linux-x86_64;/corvette/usr/local/epics/base-3.15.5/bin/linux-x86_64 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? Thanks, Mark |