Thread overview
[VisualD] Why does VS expect all the .obj files to have a '+' after them?
Oct 09, 2017
David Zhang
Oct 09, 2017
Rainer Schuetze
Oct 09, 2017
David Zhang
Oct 11, 2017
Rainer Schuetze
October 09, 2017
I'm trying to compile a project of mine for the first time with Visual Studio, but I keep getting the following linker error:

    LINK : fatal error LNK1181: cannot open input file 'obj\debug\dummy\test\..\source\test\app.obj+'

Nothing I do seems to work. What's going on here?
October 09, 2017

On 09.10.2017 18:13, David Zhang wrote:
> I'm trying to compile a project of mine for the first time with Visual Studio, but I keep getting the following linker error:
> 
>      LINK : fatal error LNK1181: cannot open input file 'obj\debug\dummy\test\..\source\test\app.obj+'
> 
> Nothing I do seems to work. What's going on here?

This looks like the wrong linker is called. For Win32, the default is to use link.exe that comes with dmd, i.e. $(DMDInstallDir)\windows\bin\link.exe. This linker only support the OMF object file format and has a different command line syntax than the Microsoft linker.

To fix this, you should check that the path $(DMDInstallDir)\windows\bin comes first in the executable paths specified on the page Tools->Options->Projects and Solutions->Visual D Settings->DMD directories->Win32.

If you build for x64 or enable MS-COFF output on the project property page Compiler->Output, the MS linker is used anyway, so should not have this problem.
October 09, 2017
On Monday, 9 October 2017 at 17:34:38 UTC, Rainer Schuetze wrote:
> This looks like the wrong linker is called. For Win32, the default is to use link.exe that comes with dmd, i.e. $(DMDInstallDir)\windows\bin\link.exe. This linker only support the OMF object file format and has a different command line syntax than the Microsoft linker.
>
> To fix this, you should check that the path $(DMDInstallDir)\windows\bin comes first in the executable paths specified on the page Tools->Options->Projects and Solutions->Visual D Settings->DMD directories->Win32.
>
> If you build for x64 or enable MS-COFF output on the project property page Compiler->Output, the MS linker is used anyway, so should not have this problem.

Right, thanks. Though I don't understand why dub doesn't generate a correct visual studio solution?
October 11, 2017

On 10.10.2017 00:50, David Zhang wrote:
> On Monday, 9 October 2017 at 17:34:38 UTC, Rainer Schuetze wrote:
>> This looks like the wrong linker is called. For Win32, the default is to use link.exe that comes with dmd, i.e. $(DMDInstallDir)\windows\bin\link.exe. This linker only support the OMF object file format and has a different command line syntax than the Microsoft linker.
>>
>> To fix this, you should check that the path $(DMDInstallDir)\windows\bin comes first in the executable paths specified on the page Tools->Options->Projects and Solutions->Visual D Settings->DMD directories->Win32.
>>
>> If you build for x64 or enable MS-COFF output on the project property page Compiler->Output, the MS linker is used anyway, so should not have this problem.
> 
> Right, thanks. Though I don't understand why dub doesn't generate a correct visual studio solution?

The path options are not part of the project, but global settings.