fixes DLL hell on Windows

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -50,7 +50,18 @@ News
and are now deprecated and will be removed from the language. Instead you
have to insert type conversions
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
@@ -79,6 +90,8 @@ News
- 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
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