Installing DMD on 64-bit Windows 7 (COFF-compatible)
Good day, fellow D developers. After spending much time figuring out how to make DMD work fluently under 64-bit Windows 7 I've realized that this is not a trivial task and lots of people might have trouble with this, so I've decided to post my solution, that might save people a lot of time.
As we know, there are compatibility problems with 32-bit DMD binaries, because they are compiled using DMC back-end, which can only produce OMF binaries, so in order to avoid problems with linking against externally compiled libraries, it's much easier to stick to 64-bit binaries, so that DMD will use the Visual Studio linker to produce compatible COFF binaries. Another problem is that 32-bit DMD binaries are linked against obsolete 32-bit WinAPI libraries, which lack some very important functions, while the 64-bit binaries are required to link with the 64-bit libraries, supplied by the the Windows SDK.
And here's how this could be arranged:
- Prepare your development folder.
- Create a folder with no spaces in its full path.
- Store its full path in the '%DEV_DIR_ROOT%' environment variable.
- Get the Windows SDK.
- Download the Windows SDK.
- Navigate to http://msdn.microsoft.com/en-US/windows//bb980924.aspx in a web browser.
- Under section 2 (number '2' in a green circle) click on the bold blue 'Install Now' link.
- In the opened window click in the blue 'Download' button at the bottom of the page.
- Make sure, that the Windows SDK installer ('winsdk_web.exe') is downloaded.
- Install the downloaded Windows SDK.
- Navigate to the folder, where the Windows SDK installer was downloaded in a file browser.
- Double-click on the installer and agree to security warnings to launch it.
- Click next, read and agree to the license until you reach the 'Install Locations' screen.
- Store the path under 'Destination Folder for Tools' in the '%DEV_DIR_MSWINSDK%' (e.g. 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A') and click 'Next >'.
- On the 'Installation Options' uncheck everything except 'x64 Libraries' and 'Visual C++ Compilers' and click 'Next >'.
- Confirm that everything is correct and click 'Next >' to start installing.
- Make sure, tata the installation is completed succesfully.
- Store the path to the installed Visual Studio C++ compiler into the '%DEV_DIR_MSVC%' environment variable (e.g. 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC').
- Download the Windows SDK.
- Get the DMD.
- Navigate to http://ftp.digitalmars.com/dmd2beta.zip in a web browser.
- Make sure, that the DMD compiler archive ('dmd2beta.zip') is downloaded.
- Unzip the archive into '%DEV_DIR_ROOT%\Tools', so that the 'dmd2' folder in the archive will end up in '%DEV_DIR_ROOT%\Tools\dmd2'.
- Adapt the compiler configuration to the development environment.
- Open the file '%DEV_DIR_ROOT%\Tools\dmd2\windows\bin\sc.ini' in a text editor.
- Replace the line with 'LIB=' with the line 'LIB="%DEV_DIR_WINSDK%\Lib\x64";"%DEV_DIR_MSVC%\lib\amd64";"%@P%\..\lib"'.
- Add '-m64 -L/NOLOGO' to the 'DFLAGS' variable.
- Remove the lines with 'VCINSTALLDIR=' and 'WindowsSdkDir='.
- Replace the like with 'LINKCMD64=' with the line 'LINKCMD64="%DEV_DIR_MSVC%\bin\amd64\link.exe"' Now "%DEV_DIR_ROOT%\Tools\dmd2\windows\bin\dmd.exe" will always use the Windows SDK libraries and Visual C++ compiler to produce 64-bit COFF binaries.
I hope I was helpful, because when I started to set up a development environment under 64-bit Windows 7, I went through a lot of problems to get here and I'd love to have this HOWTO at that time.