On Tuesday, 12 January 2016 at 01:26:06 UTC, Mike Parker wrote:
On Monday, 11 January 2016 at 20:19:50 UTC, Jason Jeffory wrote:
On Monday, 11 January 2016 at 20:17:23 UTC, Jason Jeffory
wrote:
Any ideas? Happens when I do a very simple dub project and
try to compile using the MS linker(x86 but set in sc.ini or
64). I'm linking in glfw(using correct arch of course)
{
"name": "Test",
"description": "A minimal D application.",
"copyright": "Copyright © 2016, Jason",
"authors": ["Jason"],
"lflags" : ["+C:\\Dlang\\Libs\\glfw3.lib"],
"dflags-dmd": [""],
"versions-x86_64": ["UseAmd64Impl"],
"dependencies": {
}
}
seems "versions-x86_64": ["UseAmd64Impl"],
doesn't actually make it 64
******
Performing "debug" build using dmd for x86.
midimonitor ~master: building configuration "application"...
Linking...
Microsoft (R) Incremental Linker Version 14.00.23506.0
Copyright (C) Microsoft Corporation. All rights reserved.
LINK : fatal error LNK1104: cannot open file '_CMDLINE'
--- errorlevel 1104
dmd failed with exit code 1104.
Sheesh, why is it so hard to do simple stuff?
There's nothing hard about it. It's just a matter of learning
what's what.
Um, if there was proper documentation, this wouldn't be a problem.
First, don't set 32/64-bit compilation in sc.ini. In fact, you
should generally never touch sc.ini (more on that below). If
you are calling DMD directly, just pass -m64 on the command
line. If you are using DUB, pass -ax86_64 on the command line.
I don't set that in sc.ini, but you have to set the correct
paths. It works fine with VS/VD.
I also don't want to pass a command line to dub. Too much work.
What if I forget? What about the correct libs? What if I forget
to type dub -ax86_64 and it tries to compile in the 64-bit lib in
the lib's path in sc.ini?(yes, it needs to be edited for global
library locations).
Second, you don't need to set your own version flag for 64-bit.
Both x86_64 and Win64 are already predefined [1]. The latter is
only defined on when compiling for 64-bit Windows (Win32 is
only defined when compiling for 32-bit Windows, unlike in the C
world where the #defined _WIN32 means the Win32 API is
available). Should you need to, you can also distinguish
between the two Windows runtimes via the CRuntime_DigitalMars
and CRuntime_Microsoft versions.
This was a mistake, because I got the wrong info from some forum
post that was wrong.
So, how do I set the json to compile for x64?