Thread overview
yet another VisualD linker error
Jan 05, 2014
Palmic
Jan 05, 2014
Rainer Schuetze
Jan 05, 2014
Palmic
January 05, 2014
Hi,

Like a lot of people I'm a bit struggling with VisualD since I can't get the linker working.

My configuration:

Windows 8.1 x64, Visual Studio 2013.

So yes it means I have Windows 8.1 SDK, and the values commented in sc.ini are wrong. Therefore I changed only the following to:

VCINSTALLDIR=D:\software\vs2013\VC
WindowsSdkDir=C:\Program Files (x86)\Windows Kits\8.1
LINKCMD=%VCINSTALLDIR%\bin\x86_amd64\link.exe
; needed with /DEBUG to find mspdb*.dll (only for VS2012 or VS2013)
PATH=%PATH%;%VCINSTALLDIR%\bin\x86_amd64;%VCINSTALLDIR%\..\Common7\IDE
; Platform libraries (Windows SDK 8.1)
LIB=%LIB%;"%WindowsSdkDir%\Lib\winv6.3\um\x64"


Still I can't link my basic Win32 API simple program. Here is the build log html:

Command Line
set PATH=D:\dev\dmd2\windows\\bin;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\\\bin;%PATH%
set DMD_LIB=D:\software\vs2013\VC\\lib\amd64
set WindowsSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\
set VCINSTALLDIR=D:\software\vs2013\VC\
dmd -m64 -g -debug -X -Xf"Debug\WindowsApp1.json" -I"D:\dev\projects\d-lang\WindowsApp1\third_parties\" -deps="Debug\WindowsApp1.dep" -c -of"Debug\WindowsApp1.obj" winmain.d
if errorlevel 1 goto reportError

set LIB="D:\dev\dmd2\windows\bin\..\lib64";"D:\software\vs2013\VC\lib\amd64";"C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64";"C:\Program Files (x86)\Windows Kits\8.1\Lib\x64"
echo. > Debug\WindowsApp1.build.lnkarg
echo "Debug\WindowsApp1.obj" /OUT:"Debug\WindowsApp1.exe" /MAP:"Debug\WindowsApp1.map" ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib user32.lib kernel32.lib /LIBPATH:"D:\software\vs2013\VC\\lib\amd64\" /DEBUG /INCREMENTAL:NO /NOLOGO /SUBSYSTEM:WINDOWS >> Debug\WindowsApp1.build.lnkarg

"D:\software\VisualD\pipedmd.exe" -deps Debug\WindowsApp1.lnkdep "D:\software\vs2013\VC\\bin\link.exe" @Debug\WindowsApp1.build.lnkarg
if errorlevel 1 goto reportError
if not exist "Debug\WindowsApp1.exe" (echo "Debug\WindowsApp1.exe" not created! && goto reportError)

goto noError

:reportError
echo Building Debug\WindowsApp1.exe failed!

:noError
Output
DMD32 D Compiler v2.064
Copyright (c) 1999-2013 by Digital Mars written by Walter Bright
Documentation: http://dlang.org/
Usage:
  dmd files.d ... { -switch }

  files.d        D source files
  @cmdfile       read arguments from cmdfile
  -allinst       generate code for all template instantiations
  -c             do not link
  -cov           do code coverage analysis
  -cov=nnn       require at least nnn% code coverage
  -D             generate documentation
  -Dddocdir      write documentation file to docdir directory
  -Dffilename    write documentation file to filename
  -d             silently allow deprecated features
  -dw            show use of deprecated features as warnings (default)
  -de            show use of deprecated features as errors (halt compilation)
  -debug         compile in debug code
  -debug=level   compile in debug code <= level
  -debug=ident   compile in debug code identified by ident
  -debuglib=name    set symbolic debug library to name
  -defaultlib=name  set default library to name
  -deps          print module dependencies (imports/file/version/debug/lib)
  -deps=filename write module dependencies to filename (only imports - deprecated)
  -g             add symbolic debug info
  -gc            add symbolic debug info, pretend to be C
  -gs            always emit stack frame
  -gx            add stack stomp code
  -H             generate 'header' file
  -Hddirectory   write 'header' file to directory
  -Hffilename    write 'header' file to filename
  --help         print help
  -Ipath         where to look for imports
  -ignore        ignore unsupported pragmas
  -inline        do function inlining
  -Jpath         where to look for string imports
  -Llinkerflag   pass linkerflag to link
  -lib           generate library rather than object files
  -m32           generate 32 bit code
  -m64           generate 64 bit code
  -main          add default main() (e.g. for unittesting)
  -man           open web browser on manual page
  -map           generate linker .map file
  -noboundscheck turns off array bounds checking for all functions
  -O             optimize
  -o-            do not write object file
  -odobjdir      write object & library files to directory objdir
  -offilename    name output file to filename
  -op            preserve source path for output files
  -profile       profile runtime performance of generated code
  -property      enforce property syntax
  -quiet         suppress unnecessary messages
  -release       compile release version
  -run srcfile args...   run resulting program, passing args
  -shared        generate shared library (DLL)
  -transition=id show additional info about language change identified by 'id'
  -transition=?  list all language changes
  -unittest      compile in unit tests
  -v             verbose
  -version=level compile in version code >= level
  -version=ident compile in version code identified by ident
  -vtls          list all variables going into thread local storage
  -w             warnings as errors (compilation will halt)
  -wi            warnings as messages (compilation will continue)
  -X             generate JSON file
  -Xffilename    write JSON file to filename
Building Debug\WindowsApp1.exe failed!


The error message is not meaningfull enough so that I can figure out what is wrong, therefore any help or suggestion is appreciated.

Thanks!




January 05, 2014

On 05.01.2014 12:24, Palmic wrote:
> dmd -m64 -g -debug -X -Xf"Debug\WindowsApp1.json"
> -I"D:\dev\projects\d-lang\WindowsApp1\third_parties\"
> -deps="Debug\WindowsApp1.dep" -c -of"Debug\WindowsApp1.obj" winmain.d

What's bad here is the trailing \ in the import switch. It escapes the quote and confuses the command line parser.

Please try removing the trailing \ from the D:\dev\projects\d-lang\WindowsApp1\third_parties\ setting.
January 05, 2014
Doh...

You are totally right, working fine now!

Thanks!

On Sunday, 5 January 2014 at 14:46:01 UTC, Rainer Schuetze wrote:
>
>
> On 05.01.2014 12:24, Palmic wrote:
>> dmd -m64 -g -debug -X -Xf"Debug\WindowsApp1.json"
>> -I"D:\dev\projects\d-lang\WindowsApp1\third_parties\"
>> -deps="Debug\WindowsApp1.dep" -c -of"Debug\WindowsApp1.obj" winmain.d
>
> What's bad here is the trailing \ in the import switch. It escapes the quote and confuses the command line parser.
>
> Please try removing the trailing \ from the D:\dev\projects\d-lang\WindowsApp1\third_parties\ setting.