From 38da6c2258c0ff073b0e86e0a1f6ba190f061e5e Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 23 Dec 2017 15:56:15 +0100 Subject: [PATCH] fix issue 18354 - replace VS version check with check for existence of legacy_stdio_definitions.lib --- src/dmd/link.d | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/dmd/link.d b/src/dmd/link.d index 1f6e4c4bf7c8..85c753120efc 100644 --- a/src/dmd/link.d +++ b/src/dmd/link.d @@ -960,21 +960,23 @@ version (Windows) const(char)* linkOptions(bool x64) { OutBuffer cmdbuf; - if (auto p = getVCDir(VCDir.Lib, x64)) + if (auto vclibdir = getVCDir(VCDir.Lib, x64)) { cmdbuf.writestring(" /LIBPATH:\""); - cmdbuf.writestring(p); + cmdbuf.writestring(vclibdir); cmdbuf.writeByte('\"'); - } - if (VisualStudioVersion && strcmp(VisualStudioVersion, "14") >= 0) - { - if (auto p = getUCRTLibPath(x64)) + + if (FileName.exists(FileName.combine(vclibdir, "legacy_stdio_definitions.lib"))) { - cmdbuf.writestring(" /LIBPATH:\""); - cmdbuf.writestring(p); - cmdbuf.writeByte('\"'); + // VS2015 or later use UCRT + cmdbuf.writestring(" legacy_stdio_definitions.lib"); + if (auto p = getUCRTLibPath(x64)) + { + cmdbuf.writestring(" /LIBPATH:\""); + cmdbuf.writestring(p); + cmdbuf.writeByte('\"'); + } } - cmdbuf.writestring(" legacy_stdio_definitions.lib"); } const(char)* windowssdkdir = getenv("WindowsSdkDir"); if (auto p = getSDKLibPath(x64))