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
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev