DMD under 64-bit Windows 7 HOWTO

Adam Wilson flyboynw at gmail.com
Sun May 26 16:33:51 PDT 2013


On Sun, 26 May 2013 16:22:54 -0700, Manu <turkeyman at gmail.com> wrote:

> On 26 May 2013 15:03, Adam Wilson <flyboynw at gmail.com> wrote:
>
>> On Sat, 25 May 2013 18:24:41 -0700, Manu <turkeyman at gmail.com> wrote:
>>
>> FYI. DMD did not work out-of-the-box on a vanilla VS2012/Win8 install.  
>> The
>> Windows 8 SDK no longer includes the C++ compilers and VS2012 doesn't  
>> setup
>> the Environment Variables used in sc.ini.
>>
>
> Ah wow, sorry! I had no idea!
> I tent to lag 2-3 revisions behind the head of VS (finally using 2010) ;)
> They seem to make every version worse!
>

Indeed. Some days I wonder if they actually care anymore.

>> But the most annoying part is that using the Win8 SDK causes the linker  
>> to
>> spit out dozens of external symbol resolution failures. It was at this
>> point that I gave up.
>>
>>  I  might just add, that if you have Visual Studio installed (which I
>>> presume many Windows dev's do), then you don't need to do ANYTHING.
>>> DMD64 just works if VS is present.
>>>
>>> I didn't do a single thing to get DMD-Win64 working. And it's working
>>> great.
>>>
>>> You should make sure this is clear at the top of any wiki entry.
>>>
>>> Perhaps a future push to convince Walter to port DMD-Win32 to  
>>> COFF/WinSDK
>>> aswell might be nice ;)
>>> Win32 is still an important platform for many (most?) users.
>>>
>>>
>>> On 18 December 2012 23:32, Gor Gyolchanyan  
>>> <gor.f.gyolchanyan at gmail.com>*
>>> *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<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<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.
>>>>
>>>> --
>>>> Bye,
>>>> Gor Gyolchanyan.
>>>>
>>>>
>>
>> --
>> Adam Wilson
>> IRC: LightBender
>> Project Coordinator
>> The Horizon Project
>> http://www.thehorizonproject.**org/ <http://www.thehorizonproject.org/>
>>


-- 
Adam Wilson
IRC: LightBender
Project Coordinator
The Horizon Project
http://www.thehorizonproject.org/


More information about the Digitalmars-d mailing list