fixes DLL hell on Windows

This commit is contained in:
Araq 2015-09-05 12:03:53 +02:00
commit 0320c0c73b
5 changed files with 41 additions and 7 deletions

View file

@ -14,9 +14,15 @@
const useWinVersion = defined(Windows) or defined(nimdoc) const useWinVersion = defined(Windows) or defined(nimdoc)
when useWinVersion: when useWinVersion:
when not defined(nimOldDlls) and defined(cpu64):
const
DLLSSLName = "(ssleay64|libssl64).dll"
DLLUtilName = "libeay64.dll"
else:
const const
DLLSSLName = "(ssleay32|libssl32).dll" DLLSSLName = "(ssleay32|libssl32).dll"
DLLUtilName = "libeay32.dll" DLLUtilName = "libeay32.dll"
from winlean import SocketHandle from winlean import SocketHandle
else: else:
const const

View file

@ -310,7 +310,12 @@ type
when not defined(usePcreHeader): when not defined(usePcreHeader):
when hostOS == "windows": when hostOS == "windows":
when defined(nimOldDlls):
const pcreDll = "pcre.dll" const pcreDll = "pcre.dll"
elif defined(cpu64):
const pcreDll = "pcre64.dll"
else:
const pcreDll = "pcre32.dll"
elif hostOS == "macosx": elif hostOS == "macosx":
const pcreDll = "libpcre(.3|.1|).dylib" const pcreDll = "libpcre(.3|.1|).dylib"
else: else:

View file

@ -42,8 +42,14 @@ pdcwin.h:
when defined(windows): when defined(windows):
import windows import windows
when defined(nimOldDlls):
const pdcursesdll = "pdcurses.dll"
elif defined(cpu64):
const pdcursesdll = "pdcurses64.dll"
else:
const pdcursesdll = "pdcurses32.dll"
const const
pdcursesdll = "pdcurses.dll"
unixOS = false unixOS = false
{.pragma: extdecl, stdcall.} {.pragma: extdecl, stdcall.}

View file

@ -9,8 +9,12 @@
{.deadCodeElim: on.} {.deadCodeElim: on.}
when defined(windows): when defined(windows):
const when defined(nimOldDlls):
Lib = "sqlite3.dll" const Lib = "sqlite3.dll"
elif defined(cpu64):
const Lib = "sqlite3_64.dll"
else:
const Lib = "sqlite3_32.dll"
elif defined(macosx): elif defined(macosx):
const const
Lib = "libsqlite3(|.0).dylib" Lib = "libsqlite3(|.0).dylib"

View file

@ -50,7 +50,18 @@ News
and are now deprecated and will be removed from the language. Instead you and are now deprecated and will be removed from the language. Instead you
have to insert type conversions have to insert type conversions
like ``(proc (a, b: int) {.closure.})(myToplevelProc)`` if necessary. like ``(proc (a, b: int) {.closure.})(myToplevelProc)`` if necessary.
- The constant fights between 32 and 64 bit DLLs on Windows have been put to
an end: The standard distribution now ships with 32 and 64 bit versions
of all the DLLs the standard library needs. This means that the following
DLLs are now split into 32 and 64 versions:
* ``prce.dll``: Split into ``prce32.dll`` and ``prce64.dll``.
* ``pdcurses.dll``: Split into ``pdcurses32.dll`` and ``pdcurses64.dll``.
* ``sqlite3.dll``: Split into ``sqlite3_32.dll`` and ``sqlite3_64.dll``.
* ``ssleay32.dll``: Split into ``ssleay32.dll`` and ``ssleay64.dll``.
* ``libeay32.dll``: Split into ``libeay32.dll`` and ``libeay64.dll``.
Compile with ``-d:nimOldDLLs`` to make the stdlib use the old DLL names.
Library additions Library additions
@ -79,6 +90,8 @@ News
- Tuple unpacking finally works in a non-var/let context: ``(x, y) == f()`` - Tuple unpacking finally works in a non-var/let context: ``(x, y) == f()``
is allowed. Note that this doesn't declare ``x`` and ``y`` variables, for is allowed. Note that this doesn't declare ``x`` and ``y`` variables, for
this ``let (x, y) == f()`` still needs to be used. this ``let (x, y) == f()`` still needs to be used.
- ``when nimvm`` can now be used for compiletime versions of some code
sections. See (XXX) for details.
Bugfixes Bugfixes