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?

Reply via email to