Thread overview
VisualD: link failure
May 02, 2015
finalpatch
May 03, 2015
Rainer Schuetze
May 04, 2015
finalpatch
May 02, 2015
I'm using Visual Studio Community 2013 Version 12.031101.00 Update 4 and Visual D 0.3.41 beta2.

Building with Visual D fails every time, with any project. Upon examining the log it seems an excessive '+' is added to the .lib or .obj file names in the linking step.

Here's the log of building the app wizard generated console project and another log of building the wizard generated windows project.

---->8-------->8-------->8-------->8-------->8-------->8-------->8----

Build Log
Building Debug\ConsoleApp1.exe
Command Line
set PATH=C:\Users\fengli\Apps\dmd2\windows\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\\Common7\IDE;C:\Program Files (x86)\Windows Kits\8.1\\bin;%PATH%
dmd -g -debug -X -Xf"Debug\ConsoleApp1.json" -deps="Debug\ConsoleApp1.dep" -c -of"Debug\ConsoleApp1.obj" main.d
if errorlevel 1 goto reportError

set LIB=
echo. > ConsoleApp1.build.lnkarg
echo "Debug\ConsoleApp1.obj","Debug\ConsoleApp1.exe_cv","Debug\ConsoleApp1.map",user32.lib+ >> ConsoleApp1.build.lnkarg
echo kernel32.lib/NOMAP/CO/NOI/DELEXE >> ConsoleApp1.build.lnkarg

"C:\Program Files (x86)\VisualD\pipedmd.exe" -deps Debug\ConsoleApp1.lnkdep link.exe @ConsoleApp1.build.lnkarg
if errorlevel 1 goto reportError
if not exist "Debug\ConsoleApp1.exe_cv" (echo "Debug\ConsoleApp1.exe_cv" not created! && goto reportError)
echo Converting debug information...
"C:\Program Files (x86)\VisualD\cv2pdb\cv2pdb.exe" "Debug\ConsoleApp1.exe_cv" "Debug\ConsoleApp1.exe"
if errorlevel 1 goto reportError
if not exist "Debug\ConsoleApp1.exe" (echo "Debug\ConsoleApp1.exe" not created! && goto reportError)

goto noError

:reportError
echo Building Debug\ConsoleApp1.exe failed!

:noError
Output
link: cannot create link 'kernel32.lib/NOMAP/CO/NOI/DELEXE' to 'Debug\\ConsoleApp1.obj,Debug\\ConsoleApp1.exe_cv,Debug\\ConsoleApp1.map,user32.lib+': No such file or directory
Building Debug\ConsoleApp1.exe failed!

---->8-------->8-------->8-------->8-------->8-------->8-------->8----

Build Log
Building Debug\WindowsApp2.exe
Command Line
set PATH=C:\Users\fengli\Apps\dmd2\windows\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\\Common7\IDE;C:\Program Files (x86)\Windows Kits\8.1\\bin;%PATH%
dmd -g -debug -X -Xf"Debug\WindowsApp2.json" -deps="Debug\WindowsApp2.dep" -c -of"Debug\WindowsApp2.obj" winmain.d
if errorlevel 1 goto reportError

set LIB=
echo. > WindowsApp2.build.lnkarg
echo "Debug\WindowsApp2.obj","Debug\WindowsApp2.exe_cv","Debug\WindowsApp2.map",ole32.lib+ >> WindowsApp2.build.lnkarg
echo kernel32.lib+ >> WindowsApp2.build.lnkarg
echo user32.lib+ >> WindowsApp2.build.lnkarg
echo comctl32.lib+ >> WindowsApp2.build.lnkarg
echo comdlg32.lib+ >> WindowsApp2.build.lnkarg
echo user32.lib+ >> WindowsApp2.build.lnkarg
echo kernel32.lib/NOMAP/CO/NOI/DELEXE /SUBSYSTEM:WINDOWS >> WindowsApp2.build.lnkarg

"C:\Program Files (x86)\VisualD\pipedmd.exe" -deps Debug\WindowsApp2.lnkdep link.exe @WindowsApp2.build.lnkarg
if errorlevel 1 goto reportError
if not exist "Debug\WindowsApp2.exe_cv" (echo "Debug\WindowsApp2.exe_cv" not created! && goto reportError)
echo Converting debug information...
"C:\Program Files (x86)\VisualD\cv2pdb\cv2pdb.exe" "Debug\WindowsApp2.exe_cv" "Debug\WindowsApp2.exe"
if errorlevel 1 goto reportError
if not exist "Debug\WindowsApp2.exe" (echo "Debug\WindowsApp2.exe" not created! && goto reportError)

goto noError

:reportError
echo Building Debug\WindowsApp2.exe failed!

:noError
Output
link: extra operand 'user32.lib+'
Try 'link --help' for more information.
Building Debug\WindowsApp2.exe failed!

May 03, 2015

On 02.05.2015 05:32, finalpatch wrote:
> Building with Visual D fails every time, with any project. Upon
> examining the log it seems an excessive '+' is added to the .lib or .obj
> file names in the linking step.
[...]
> :noError
> Output
> link: extra operand 'user32.lib+'
> Try 'link --help' for more information.
> Building Debug\WindowsApp2.exe failed!

This is not the usual output from optlink, the linker used to build win32 applications.

I suspect link.exe is missing from C:\Users\fengli\Apps\dmd2\windows\bin. If you have renamed it (to avoid it replacing the MS linker on the command line), you should also adjust the appropriate entry in sc.ini in the same direcctory).
May 04, 2015
Thank you Rainer, you are absolutely right, my dmd path setting is wrong.

On Sunday, 3 May 2015 at 14:01:14 UTC, Rainer Schuetze wrote:
>
>
> On 02.05.2015 05:32, finalpatch wrote:
>> Building with Visual D fails every time, with any project. Upon
>> examining the log it seems an excessive '+' is added to the .lib or .obj
>> file names in the linking step.
> [...]
>> :noError
>> Output
>> link: extra operand 'user32.lib+'
>> Try 'link --help' for more information.
>> Building Debug\WindowsApp2.exe failed!
>
> This is not the usual output from optlink, the linker used to build win32 applications.
>
> I suspect link.exe is missing from C:\Users\fengli\Apps\dmd2\windows\bin. If you have renamed it (to avoid it replacing the MS linker on the command line), you should also adjust the appropriate entry in sc.ini in the same direcctory).