Hello, I'm currently deploying a Gdal-based application on various Windows-PCs.
For some of them, there are integration problems, due to dll conflicts. As an example: 1) Here is my app directory structure : MyApp | |-- gdal | | | |- gdal201.dll | |- libeay32.dll | |- ssleay32.dll | |- ... | |-- myApp.exe |-- othersDll.dll 2) On some of the PCs I use, libeay32.dll and ssleay32.dll are also present on C:\Windows\SysWOW64 folder, in versions different from mines. 3) When the app loads gdal201.dll, dependencies are loaded first in C:\Windows\SysWOW64 folder ==> C:\Windows\SysWOW64 \libeay32.dll and ssleay32.dll are loaded, that causes a crash. I checked that : - In GdalConfiguration.cs, GdalConfiguration(), my PATH env var is correctly overriden var gdalPath = Path.Combine(executingDirectory, "gdal-2.0.1"); var nativePath = Path.Combine(gdalPath, GetPlatform()); // Prepend native path to environment path, to ensure the // right libs are being used. var path = Environment.GetEnvironmentVariable("PATH"); path = nativePath + ";" + Path.Combine(nativePath, "plugins") + ";" + path; Environment.SetEnvironmentVariable("PATH", path); - Using a file access monitoring tool (ProcessMonitor, from Microsoft), I observe that dll search order is : o myApp.exe directory o C:\windows\ SysWOW64 o C:\windows\System32 o C:\...\MyApp\gdal-2.0.1 ð This is not compliant with PATH overriding After browsing internet (including the mailing-list :)), I don't want to : - Compile gdal statically, - Copy gdal dependencies in myApp.exe root directory, - Comment some lines of my makefile in order to avoid dependencies such as libeay32.dll or ssleay32.dll. Have you got ideas about this problem ? -- Thank you, Jérome Siot (Excuse me for my awful English, I'm French !) --
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev