hi Floris Briolas wrote: > > > fevans wrote: >> >> *trim* >> So when I run the command 'mono GDALInfo.exe' it returns a usage >> statement. no errors. But when I run 'mono GDALinfo.exe foo.tif', I get a >> type-loader exception. >> *trim* >> > > This is a yes, me too response, but I've done some analysis on my own. > > First I was stuck on the DllNotFoundException. My next step was to call > GDALAllRegister on gdal_fw (Gdal_wrap uses this one). > (*All code was not cut and pasted*) > > [DllImport("gdal_fw")] > public static extern void GDALAllRegister(); > > And created a small console app that runs this. When run from command line > it runs just fine, but when run with mono it gave a DllNotFoundException > (startled). The DLL could be found just fine, the environment path was the > same, it pointed to the bin of gdal (I've used fwtools 2.2.8) ,.. so what > could have gone wrong? > > I've PInvoked LoadLibrary from Kernel32 > > [DllImport("Kernel32"), SetLastError = true)] > Public extern static int LoadLibrary(string name); > > When you run : > Console.WriteLine(LoadLibrary("gdal_fw")); > With normal .net it runs fine, a handle is returned. under mono it fails > with error code (getlasterror) 182 meaning invalid ordinal? > I've checked the dll dependencies of gdal_fw,.. and long story short, it > seems the ssleay32.dll fails to load (182) when mono is run. The > dependencies of ssleay32 load just fine. btw folks these are all unmanaged > dll's.. > > Now it's time for me to give up. Hoping someone finds a solution, or an > explanation why this would occur with mono running. > > regards > > Floris Briolas > > (used mono 2.0.1 on win xp) >
Sorry but i don't speek english... i was found the solution to the "ssleay32.dll" load problem. command line> del c:\your mono path\bin\libeay32.dll and if you run this code snippet: [DllImport("Kernel32", SetLastError = true)] public extern static int LoadLibrary(string name); static void Main() { ... Console.WriteLine("libeay32.dll:" + LoadLibrary("libeay32.dll").ToString ()); Console.WriteLine("ssleay32.dll: " + LoadLibrary("ssleay32.dll").ToString ()); ... } command line> mono test.exe libeay32.dll: 21037056 ssleay32.dll: 22347776 and it seems that works well! it seems a bug. regards -- View this message in context: http://www.nabble.com/gdal-mono-linux--Native-bindings%2C-PInvoke%2C-and-tracking-TypeLoader-exceptions-tp17622978p21533484.html Sent from the Mono - Dev mailing list archive at Nabble.com. _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list