DMD under 64-bit Windows 7 HOWTO

"Sébastien "Sébastien
Sat May 25 06:03:11 PDT 2013


On Tuesday, 18 December 2012 at 13:33:03 UTC, Gor Gyolchanyan 
wrote:
> 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:
>
> 1. Prepare your development folder.
> 1.1. Create a folder with no spaces in its full path.
> 1.2. Store its full path in the '%DEV_DIR_ROOT%' environment 
> variable.
> 2. Get the Windows SDK.
> 2.1. Download the Windows SDK.
> 2.1.1. Navigate to 
> 'http://msdn.microsoft.com/en-US/windows//bb980924.aspx'
> in a web browser.
> 2.1.2. Under section 2 (number '2' in a green circle) click on 
> the bold
> blue 'Install Now' link.
> 2.1.3. In the opened window click in the blue 'Download' button 
> at the
> bottom of the page.
> 2.1.4. Make sure, that the Windows SDK installer 
> ('winsdk_web.exe') is
> downloaded.
> 2.2. Install the downloaded Windows SDK.
> 2.2.1. Navigate to the folder, where the Windows SDK installer 
> was
> downloaded in a file browser.
> 2.2.2. Double-click on the installer and agree to security 
> warnings to
> launch it.
> 2.2.3. Click next, read and agree to the license until you 
> reach the
> 'Install Locations' screen.
> 2.2.4. 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 >'.
> 2.3.3. On the 'Installation Options' uncheck everything except 
> 'x64
> Libraries' and 'Visual C++ Compilers' and click 'Next >'.
> 2.3.4. Confirm that everything is correct and click 'Next >' to 
> start
> installing.
> 2.3.5. Make sure, tata the installation is completed 
> succesfully.
> 2.3.6. 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').
> 3. Get the DMD.
> 3.1. Navigate to 'http://ftp.digitalmars.com/dmd2beta.zip' in a 
> web browser.
> 3.2. Make sure, that the DMD compiler archive ('dmd2beta.zip') 
> is
> downloaded.
> 3.3. 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'.
> 3.4. Adapt the compiler configuration to the development 
> environment.
> 3.4.1. Open the file 
> '%DEV_DIR_ROOT%\Tools\dmd2\windows\bin\sc.ini' in a
> text editor.
> 3.4.2. Replace the line with 'LIB=' with the line
> 'LIB="%DEV_DIR_WINSDK%\Lib\x64";"%DEV_DIR_MSVC%\lib\amd64";"%@P%\..\lib"'.
> 3.4.3. Add '-m64 -L/NOLOGO' to  the 'DFLAGS' variable.
> 3.4.4. Remove the lines with 'VCINSTALLDIR=' and 
> 'WindowsSdkDir='.
> 3.4.5. 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.

I just tried this with the current beta (may 25, 2.063). It lacks 
the -m64 option. Was it present in some older beta ?



More information about the Digitalmars-d mailing list