dll: 32-bit builds now include the MSVCRT default libraries (for __allmul symbol)

This commit is contained in:
Bill Zissimopoulos
2016-06-02 13:21:28 -07:00
parent dddb55243b
commit 7e1906bad5
6 changed files with 39 additions and 14 deletions

View File

@ -24,8 +24,25 @@
* For this to work the following project settings must be set:
* - "C/C++ > General > SDL checks" must be empty (not "Yes" or "No").
* - "C/C++ > Code Generation > Basic Runtime Checks" must be set to "Default"
* - "C/C++ > Code Generation > Runtime Library" must be set to "Multi-threaded (/MT)".
* - "C/C++ > Code Generation > Security Check" must be disabled (/GS-).
* - "Linker > Input > Ignore All Default Libraries" must be "Yes".
*
*
* Update:
*
* It is possible to have the "Linker > Input > Ignore All Default Libraries"
* setting to "No" and still eliminate most dependencies on the MSVCRT libraries.
* For example, the WinFsp DLL does this on 32-bit builds (only) to include the
* __allmul symbol that is used when doing int64_t multiplications.
*
* The following project setting must be changed:
* - "Linker > Input > Ignore All Default Libraries" must be "No".
*
* Extreme care must be taken to ensure that the linker does not pull in symbols
* that are not required (or worse create a half-baked CRT). For example, the WinFsp
* DLL ensures this by setting the "Linker > Input > Ignore All Default Libraries"
* to "Yes" on 64-bit builds and "No" on 32-bit builds.
*/
#undef RtlFillMemory