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

Stuart <[email protected]> Thu, 09 Jul 2009 18:19:22 +1000
Newsgroups gmane.comp.python.db.pysqlite.user
Message-ID <[email protected]>
Thanks for the detailed reply.  I really dont want to have to compile 
anything if I can help it and I would rather use the binary. Trouble is 
I want to use fts3 - that is why I am trying apsw rather than sqlite3.

Traceback (most recent call last):
  File "C:\Users\sg\Desktop\Dass\hashpid.py", line 27, in <module>
    for a in cursor.execute ("select labno from ft limit 10"):
  File "src/cursor.c", line 986, in APSWCursor_execute.sqlite3_prepare_v2
SQLError: SQLError: no such module: fts3

ft is a virtual fts3 table prepared with the DOS sqlite program.  It 
works under this program.

I have tried dowloading the latest DLL from www.sqlite.com. They dont 
explicitly say with this has fts3 build in or not so I have tried 
compiling form the amalgamation,  which should included fts3 by default 
in the dll version. I overwrote the python dll but this doesn't work either.


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
>