From: Tor L. <tm...@ik...> - 2002-09-26 20:41:56
|
Soren A writes: > So that tells me that the trouble is in Glib on Win32, either in > how it is written or in how it was built (using MSVC++). No, the glib and other DLLs I distribute are built with mingw. > BTW, Tor, *why* are Windows DLLs being used from subdirectories > named "lib/" instead of "bin/" on your site? Umm, because that's where 'libtool --mode=install' puts them when invoked from the Makefiles produced from the cross-platform Makefile.am files... BTW, see Max Bowsher's message earlier today on this list (Libtool patch sticking point). > I am just asking if you are aware that this isn't appropriate on a > basic level; a Win32 DLL is NOT wholly analogous to a *nix .so > share library -- it is in an internal sense a stand-alone > executable -- and belongs with the other .exe files in dir named > bin/. The *import libs* as they are called, foo.dll.[a|lib], are > what belong in a subdir named /lib. Yes, I understand. But I don't find this so important that I would want to hack libtool or add complex workarounds to the Makefile.am files just to get the DLLs installed in $bindir. (Making the GLib etc Makefile.am files install the import libraries, too, was complex enough, this is IMHO really something that libtool should take care of automatically when it installs the DLL.) Invoking configure with --libdir=<prefix>/bin would be a possibility, but then the subdirectories of libdir (for instance GTK 2.0's lib/gtk-2.0/2.0.0/loaders) would get installed in bindir instead, which might be confusing, too. Besides, if somebody would look at it from a pure Windows perspective without any Unix background at all, using folder names like "bin" is a bit odd, too... And, the zipfiles I distribute aren't really meant for end-users. Software for end-users typically is installed with an installer, and the person building an installer can of course arrange for the DLLs to go in bin (or wherever) as she chooses. Only thing to look out for is that some DLLs (glib, gtk, pango) deduce their installation location at run-time in DllMain(). Message catalogs are looked up in <top>/lib/locale, for instance. If the DLL is in a "bin" or "lib" subfolder, the parent folder of that is assumed to be the <top>, otherwise, the DLL is assumed to be directly in <top>. --tml |