Re: [pysqlite] Compiled apsw on windows with no errors but it doesnt work

Stuart <[email protected]> Fri, 10 Jul 2009 06:46:36 +1000
Newsgroups gmane.comp.python.db.pysqlite.user
Message-ID <[email protected]>
I fixed the library as you suggested and it works.  Fantastic!  Thank 
you very much.

Stuart

Roger Binns wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Stuart wrote:
>   
>> I downloaded the latest version of apsw for python.  I used setup.py 
>> install (I had previously done a --fetch.sqlite to get the latest 
>> version of sqlite.)  
>>     
>
> The latest APSW on the website includes the latest SQLite release.  FTS3
> and Rtree are enabled in the Windows binary distribution by default so
> you haven't really achieved anything :-)
>
>   
>> I have no idea where to look for a fix.  Any ideas would be gratefully 
>> accepted.
>>     
>
> It is actually a bug in MinGW that you hit. If you want to just get up
> and running then I'd recommend using the binary distribution.  Long
> information follows:
>
>   
>> ImportError: DLL load failed: The specified procedure could not be found.
>>     
>
> This is where the symptoms show themselves.  When Windows loaded the
> apsw DLL, it referenced a symbol in another DLL that doesn't exist.
> Windows helpfully omits to mention what the DLLs or symbols involved are.
>
> This may seem rather user hostile but it actually a situation that
> shouldn't happen.  When the developer does the link stage after
> compilation all the various symbols should be resolved and errors
> generated for missing ones.  How does the compilation system know which
> symbols are in which DLLs?  This is usually done by having .lib files
> corresponding to each DLL with the .lib files listing the symbols.  Some
> modern compilation systems can look directly in the DLL for symbols
> although that is not happening with the MinGW version you are using.
>
> Separately Microsoft also decided to keep releasing new versions of
> their C library, usually with a release corresponding to each release of
> Visual Studio.  They also have a weaker versioning scheme than used on
> other systems such as Unix.  And then they decided to mess with things
> like where some symbols are implemented.  The Python dev team also
> decided to use different MSVC versions for almost every Python release
> (generally whatever was modern/stable at the time).  The huge resulting
> mess is C library versions all over the place, symbols all over the
> place and Python usage of MSVC all over the place.
>
> The MinGW developers also maintain their list of what symbols are in
> what Microsoft DLLs by hand since automatically generating would be
> considered a derived work and presumably violate licensing.  They
> shipped MinGW saying that MSVC version 9 shared library had localtime()
> when it didn't.  They also claim to not support anything except the
> plain (unnumbered) MSVC C library and so technically do not support
> Python with MSVC.
>
> The quick solution is to regenerate the MinGW .lib that corresponds to
> MSVC 9 C library.  You need to use pexports and dlltool to do so.  MinGW
> was updated a year ago but who knows when that actually get released.
>
> MinGW postings about this issue (scroll past the big calendar):
>
>   http://preview.tinyurl.com/lzmqqg
>
> Roger
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iEYEARECAAYFAkpVNGIACgkQmOOfHg372QTHTACdHZN5ZfUF9fo9LAcLrWmIxjYv
> AkQAn3L+/VgagcLpQGJFyy6cHPQCAfOS
> =d1uv
> -----END PGP SIGNATURE-----
> _______________________________________________
> list-pysqlite mailing list
> list-pysqlite-FR6EJeJVuqdwc357pe9rcyQmJico6nz3epZhswDD4dQ@public.gmane.org
> http://itsystementwicklung.de/cgi-bin/mailman/listinfo/list-pysqlite
>