On Wednesday, 26 June 2019 at 13:57:22 UTC, Gilbert Fernandes
wrote:
I am using VS 2019 into which I have C# and C++ active.
Installed the following : DMD 2.086.1 then Visual D 0.50.0
DMD has been installed at the base of C:\ at C:\D
Created a D project, which contains a default Hello world
program.
Build fails. Running the program fails.
VS displays the following error :
------ Build started: Project: Test2, Configuration: Debug x64
------
Building x64\Debug\Test2.exe...
OPTLINK (R) for Win32 Release 8.00.17
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
OPTLINK : Error 8: Illegal Filename
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0
skipped ==========
Besides installing Visual D and creating a new project, done
nothing.
I have searched the forum for people with the same problem and
found two threads.
https://forum.dlang.org/post/poq048$28mm$1...@digitalmars.com
https://forum.dlang.org/post/xmhkgkqujxmzruque...@forum.dlang.org
None do help. The option "override linker settings from sc.ini"
it may be called dmd.conf (it is on my Mac, but the windows may
be different)
is nowhere it seems. I have checked both inside the current
project properties, and VS settings themselves.
I have the following cmd to build the program in the folder :
set PATH=C:\Program Files (x86)\Visual Studio\VC\bin;C:\Program
Files (x86)\Visual Studio\Common7\IDE;C:\Program Files
(x86)\Windows Kits\10\bin;C:\D\dmd2\windows\bin;%PATH%
set DMD_LIB=C:\Program Files (x86)\Visual Studio\VC\lib\amd64
set VCINSTALLDIR=C:\Program Files (x86)\Visual Studio\VC\
set VCTOOLSINSTALLDIR=C:\Program Files (x86)\Visual
Studio\VC\Tools\MSVC\14.21.27702\
set VSINSTALLDIR=C:\Program Files (x86)\Visual Studio\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSdkVersion=10.0.17763.0
set UniversalCRTSdkDir=C:\Program Files (x86)\Windows Kits\10\
set UCRTVersion=10.0.17763.0
"C:\Program Files (x86)\VisualD\pipedmd.exe" -deps
x64\Debug\Test2.dep dmd -m64 -g -gf -debug -X
-Xf"x64\Debug\Test2.json" -c -of"x64\Debug\Test2.obj" Test2.d
if %errorlevel% neq 0 goto reportError
set LIB=C:\D\dmd2\windows\bin\..\lib64
echo. > D:\sources_D\Test2\Test2\x64\Debug\Test2.link.rsp
echo "x64\Debug\Test2.obj" /OUT:"x64\Debug\Test2.exe"
user32.lib >> D:\sources_D\Test2\Test2\x64\Debug\Test2.link.rsp
echo kernel32.lib >>
D:\sources_D\Test2\Test2\x64\Debug\Test2.link.rsp
echo legacy_stdio_definitions.lib /LIBPATH:"C:\Program Files
(x86)\Visual Studio\VC\lib\amd64" /DEBUG
/PDB:"x64\Debug\Test2.pdb" /INCREMENTAL:NO /NOLOGO /noopttls
/NODEFAULTLIB:libcmt libcmtd.lib /SUBSYSTEM:CONSOLE >>
D:\sources_D\Test2\Test2\x64\Debug\Test2.link.rsp
"C:\Program Files (x86)\VisualD\mb2utf16.exe"
D:\sources_D\Test2\Test2\x64\Debug\Test2.link.rsp
"C:\Program Files (x86)\VisualD\pipedmd.exe" -msmode -deps
x64\Debug\Test2.lnkdep C:\D\dmd2\windows\bin\link.exe
@D:\sources_D\Test2\Test2\x64\Debug\Test2.link.rsp
if %errorlevel% neq 0 goto reportError
if not exist "x64\Debug\Test2.exe" (echo "x64\Debug\Test2.exe"
not created! && goto reportError)
goto noError
:reportError
echo Building x64\Debug\Test2.exe failed!
:noError
Typing "link" seems to launch the D Optilink Linker by default
on my CMD.
If I understand properly, I should be using the VS C++ supplied
linker ?
Correct. You have VS, so it is of no use to you. Use the VS one
instead of C:\D\dmd2\windows\bin\link.exe in your build file. You
can just delete the wrong link.exe any hopefully it will pick up
the correct one in the $PATH.
Also any reason why you (or is that visualD doing that? )are
manually invoking the linker? Omit -c and dmd will invoke the
linker for you (hopefully the correct one).