gtk arch issues

Johnson Jones via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jul 31 10:50:08 PDT 2017


On Monday, 31 July 2017 at 17:16:32 UTC, Johnson Jones wrote:
> how does one allow both gtk x86 and x64 to work side by side 
> seamlessly?
>
> I installed x64 first and it seems, because whatever is using 
> the path to find the gtk runtime, it looks for that first even 
> in x86 build.
>
> Seems like gtkd's dll resolution is not very intelligent. While 
> I could manually modify the path each time I switch archs, that 
> seems pointless.
>
> One of the problems in gtkd is that it has multiple places 
> where it defines libgdk-3-0.dll.
>
>
> I've tried modifying gdkD so that it uses versioning properly 
> by searching for libgdk-3-0.dll and changing all to use an x86 
> or x64 when appropriate but that doesn't seem to help. Probably 
> have to rebuild gtkD.
>
> Anyways, doesn't seem to be a great solution ;/ Any ideas and 
> maybe someone can add an issue to the github page to get this 
> fixed? (I can't do it for a while because of other issues).

I fixed up gtkd so that it uses x86 and x64 versions of dlls but 
it doesn't seem to help with x64. I was able to get x86 to 
compile and run but x64 just loads then quits without any errors 
;/

C:\Program Files (x86)\GtkSharp\2.12\bin\libgdk_pixbuf-2.0-0.dll 
unloaded.
C:\Program Files (x86)\Gtk-Runtime\bin\libgdk_pixbuf-2.0-0.dll 
unloaded.
C:\Program Files (x86)\Gtk-Runtime\bin\libepoxy-0.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libcairo-gobject-2.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libcairo-2.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libgio-2.0-0.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libintl-8.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libglib-2.0-0.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libgobject-2.0-0.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libpango-1.0-0.dll unloaded.
C:\Program Files\Gtk-Runtime\bin\libgdk-3-0x64.dll unloaded.

Best I can tell is that something is using the x86 verisons for 
some reason. Note that all those dll's should be x64 versions, 
but something outside of gtkD is loading them, I suspect it's Gtk 
itself, which would require proper versioning ;/ I replaced 
libgdk_pxbuf in gtkd to version it,

i.e.,

version (Windows)
	version(X86)
		static immutable LIBRARY_GDKPIXBUF = 
["libgdk_pixbuf-2.0-0x86.dll"];
	else
		static immutable LIBRARY_GDKPIXBUF = 
["libgdk_pixbuf-2.0-0x64.dll"];

and rebuilt, but it obviously using using that. It's probably a 
gtk-runtime dll that is using it that isn't versioned itself ;/

Of course, I want to be able to run my programs in x64 at some 
point so figuring out what is going on is important.

It would be lovely if people would get their act together so 
things would work properly ;/


More information about the Digitalmars-d-learn mailing list