Conditional Compilation for Specific Windows

Paulo Pinto via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jan 7 14:22:49 PST 2015


On Wednesday, 7 January 2015 at 19:48:16 UTC, Jonathan Marler 
wrote:
> On Wednesday, 7 January 2015 at 18:50:40 UTC, Jacob Carlborg 
> wrote:
>> On 2015-01-07 19:27, Jonathan Marler wrote:
>>> I'm looking at the Windows multicast API.  It has different 
>>> socket
>>> options depending on if you are on Windows XP or Windows 
>>> Vista (and
>>> later).  Is there a way to tell at runtime which version of 
>>> windows you
>>> are on? Note: I'm specifically talking about runtime because 
>>> I want the
>>> same binary to run on all windows versions so I have to 
>>> support both and
>>> determine which one I am running on at runtime.
>>
>> Use the regular system API's as you would in C. Should be easy 
>> to find if you search the web.
>
> I've looked up the windows version helper functions 
> (http://msdn.microsoft.com/en-us/library/windows/desktop/dn424972(v=vs.85).aspx).
>  The problem is that these functions are not defined in DMD's 
> user32.lib.  I could use the operating system's user32.lib but 
> it is in COFF format, so I would have to convert my D object 
> files to COFF and then compile using MSVC or GNU GCC for 
> windows (or I could try converting the OS user32.lib to OMF).  
> Or, I could add the functions to DMD's user32.lib but as far as 
> I know this is a private binary managed by Digital Mars that I 
> can't contribute to?  Am I wrong?  Does anyone else have a 
> solution or an idea on this?
>
> Note: I've wanted to use other windows function in the past 
> that were missing from DMD's user32.lib file.  A solution to 
> solve this for multiple functions would be ideal, thanks.

You could bypass user32.lib by using directly user32.dll via 
LoadLibrary()/GetProcAddress().

--
Paulo


More information about the Digitalmars-d-learn mailing list