Hi José,

Yes, I did. I think you missed one of my emails. But, here is what I did:
$ ldd sqlite3.exe
         ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x7ffc1d6f0000)
         ntdll.dll => /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x778c0000)
         wow64.dll => /cygdrive/c/Windows/System32/wow64.dll (0x7ffc1c830000)
         wow64win.dll => /cygdrive/c/Windows/System32/wow64win.dll 
(0x7ffc1d540000)

Ah, you compiled a 32 bit executable - I guess on a 64 bit install of cygwin.

Try

./configure --host=x86_64-w64-mingw32 CFLAGS=-shared CFLAGS=-static-libgcc

instead of

./configure --host=i686-w64-mingw32 CFLAGS=-shared CFLAGS=-static-libgcc

Of course you need to install the corresponding tool chain in cygwin.

As far as I can tell compiling 32 bit apps on 64 bit cygwin did never work (easily). Afair the reason is that certain DLLs like SYSTEM32/ntdll.dll have 2 copies under the same file name, a 32 bit and a 64 bit variant (a Windows file system hack). Which one you get depends on if the calling process is 32 bit or 64 bit. Now if you try to link a 32 bit executable with a 64 bit linker, it gets the wrong DLL, so your 32 bit app ends up being linked to a 64 bit DLL.

One could only compile 32 bit Windows apps with 32 bit cygwin - since this is no longer supported, I would say 32 bit MinGW is neither. There are hacks around this (use a 32 bit executable to copy the DLLs from System32 somewhere else and redirect the linker to these files). But the better choice is to stop compiling for 32 bit.

Best regards,

Michael


--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to