Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation problem under Windows #27

Closed
lpintes opened this issue Aug 16, 2014 · 14 comments
Closed

Compilation problem under Windows #27

lpintes opened this issue Aug 16, 2014 · 14 comments

Comments

@lpintes
Copy link

lpintes commented Aug 16, 2014

I am not sure if I have a broken MinGW installation, or there is something "obvious" that must be done to compile Windows programs.
But if I try to compile the ui package in the "redo" directory, the following happens:

github.com/andlabs/ui/redo

In file included from c:\mingw\include_mingw.h:35:0,
from c:\mingw\include\windows.h:28,
from winapi_windows.h:17,
from c:\go\src\github.com\andlabs\ui\redo\area_windows.go:12:
c:\mingw\include\sdkddkver.h:137:8: error: #error The _WIN32_WINNT value does not match NTDDI_VERSION

error The _WIN32_WINNT value does not match NTDDI_VERSION

    ^
@andlabs
Copy link
Owner

andlabs commented Aug 17, 2014

Weird... can you post your sdkddkver.h?

@lpintes
Copy link
Author

lpintes commented Aug 17, 2014

Here is my sdkddkver.h
Dňa 17. 8. 2014 16:55 Pietro Gagliardi wrote / napísal(a):

Weird... can you post your sdkddkver.h?


Reply to this email directly or view it on GitHub
#27 (comment).

/**

  • @file sdkddkver.h
  • Copyright 2012, 2013 MinGW.org project
    *
  • Permission is hereby granted, free of charge, to any person obtaining a
  • copy of this software and associated documentation files (the "Software"),
  • to deal in the Software without restriction, including without limitation
  • the rights to use, copy, modify, merge, publish, distribute, sublicense,
  • and/or sell copies of the Software, and to permit persons to whom the
  • Software is furnished to do so, subject to the following conditions:
    *
  • The above copyright notice and this permission notice (including the next
  • paragraph) shall be included in all copies or substantial portions of the
  • Software.
    *
  • THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  • IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  • FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  • AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  • LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  • FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  • DEALINGS IN THE SOFTWARE.
    _/
    #ifndef _SDKDDKVER_H
    #define SDKDDKVER_H
    #pragma GCC system_header
    /
    Do not include _mingw.h since _mingw.h includes this file.
    #include <_mingw.h>
    */

/**

/**

  • Macros to extract values from NTDDI version.
  • Derived from comments on MSDN or social.microsoft.com
    */
    #define OSVER(ver) ((ver) & OSVERSION_MASK)
    #define SPVER(ver) (((ver) & SPVERSION_MASK) >> 8)
    #define SUBVER(ver) ((ver) & SUBVERSION_MASK)
    #define WINNTVER(ver) ((ver) / 0x00010000)

/**

  • Macros to create the minimal NTDDI version from _WIN32_WINNT value.
    */
    #define NTDDI_VERSION_FROM_WIN32_WINNT(ver) _NTDDI_VERSION_FROM_WIN32_WINNT(ver)
    #define _NTDDI_VERSION_FROM_WIN32_WINNT(ver) ver##0000

/**

  • Version constants defining _WIN32_WINNT versions.
  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
    */
    #define _WIN32_WINNT_NT4 0x0400
    #define _WIN32_WINNT_NT4E 0x0401
    #define _WIN32_WINNT_WIN95 0x0400
    #define _WIN32_WINNT_WIN98 0x0410
    #define _WIN32_WINNT_WINME 0x0490
    #define _WIN32_WINNT_WIN2K 0x0500
    #define _WIN32_WINNT_WINXP 0x0501
    #define _WIN32_WINNT_WS03 0x0502
    #define _WIN32_WINNT_WIN6 0x0600
    #define _WIN32_WINNT_VISTA 0x0600
    #define _WIN32_WINNT_WS08 0x0600
    #define _WIN32_WINNT_LONGORN 0x0600
    #define _WIN32_WINNT_WIN7 0x0601
    #define _WIN32_WINNT_WIN8 0x0602

/**

/**

  • Version constants defining NTDDI_VERSION.
  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
    */
    #define __NTDDI_WIN5 0x05000000
    #define __NTDDI_WIN51 0x05010000
    #define __NTDDI_WIN52 0x05020000
    #define __NTDDI_WIN6 0x06000000
    #define __NTDDI_WIN61 0x06010000
    #define __NTDDI_SP0 0x00000000
    #define __NTDDI_SP1 0x00000100
    #define __NTDDI_SP2 0x00000200
    #define __NTDDI_SP3 0x00000300
    #define __NTDDI_SP4 0x00000400

#define NTDDI_WIN2K __NTDDI_WIN5 + __NTDDI_SP0
#define NTDDI_WIN2KSP1 __NTDDI_WIN5 + __NTDDI_SP1
#define NTDDI_WIN2KSP2 __NTDDI_WIN5 + __NTDDI_SP2
#define NTDDI_WIN2KSP3 __NTDDI_WIN5 + __NTDDI_SP3
#define NTDDI_WIN2KSP4 __NTDDI_WIN5 + __NTDDI_SP4

#define NTDDI_WINXP __NTDDI_WIN51 + __NTDDI_SP0
#define NTDDI_WINXPSP1 __NTDDI_WIN51 + __NTDDI_SP1
#define NTDDI_WINXPSP2 __NTDDI_WIN51 + __NTDDI_SP2
#define NTDDI_WINXPSP3 __NTDDI_WIN51 + __NTDDI_SP3

#define NTDDI_WS03 __NTDDI_WIN52 + __NTDDI_SP0
#define NTDDI_WS03SP1 __NTDDI_WIN52 + __NTDDI_SP1
#define NTDDI_WS03SP2 __NTDDI_WIN52 + __NTDDI_SP2

#define NTDDI_VISTA __NTDDI_WIN6 + __NTDDI_SP0
#define NTDDI_VISTASP1 __NTDDI_WIN6 + __NTDDI_SP1
#define NTDDI_VISTASP2 __NTDDI_WIN6 + __NTDDI_SP2

#define NTDDI_LONGHORN NTDDI_VISTA

#define NTDDI_WIN6 NTDDI_VISTA
#define NTDDI_WIN6SP1 NTDDI_VISTASP1
#define NTDDI_WIN6SP2 NTDDI_VISTASP2

#define NTDDI_WS08 __NTDDI_WIN6 + __NTDDI_SP1

#define NTDDI_WIN7 __NTDDI_WIN61 + __NTDDI_SP0

/**

  • Assign defaults
    */
    #ifdef NTDDI_VERSION

    ifdef _WIN32_WINNT

    if _WIN32_WINNT != OSVER(NTDDI_VERSION)

    error The _WIN32_WINNT value does not match NTDDI_VERSION

    endif

    else

    define _WIN32_WINNT WINNTVER(NTDDI_VERSION)

    ifndef WINVER

    define WINVER _WIN32_WINNT

    endif

    endif

    #endif

#ifndef _WIN32_WINNT

ifdef WINVER

define _WIN32_WINNT WINVER

else

ifdef _WARN_DEFAULTS

warning _WIN32_WINNT is defaulting to _WIN32_WINNT_WIN2K

endif

define _WIN32_WINNT _WIN32_WINNT_WIN2K

endif

#endif

#ifndef WINVER

define WINVER _WIN32_WINNT

#endif

#ifndef NTDDI_VERSION

ifdef _WARN_DEFAULTS

warning NTDDI_VERSION is defaulting to _WIN32_WINNT version SPK0

endif

define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)

#endif

#endif

@andlabs
Copy link
Owner

andlabs commented Aug 18, 2014

Are you sure that's the sole compile error? What happens if you set CGO_CFLAGS=-Wall -Wextra -pedantic?

@lpintes
Copy link
Author

lpintes commented Aug 18, 2014

I am sure this is whole compiler error. I redirected the output to the
clipboard.
So I wrote:
set CGO_CFLAGS="-Wall -Wextra -pedantic"
go install

And I obtained this:

github.com/andlabs/ui/redo

gcc: error: "-Wall: Invalid argument
gcc: error: unrecognized command line option '-pedantic"'

@andlabs
Copy link
Owner

andlabs commented Aug 18, 2014

Remove the quotes; Windows set is very literal and takes everything after the =, including spaces.

@lpintes
Copy link
Author

lpintes commented Aug 19, 2014

Ok I corrected my mistake and here is the new output:

github.com/andlabs/ui/redo

In file included from c:\mingw\include_mingw.h:35:0,
from c:\mingw\include\windows.h:28,
from winapi_windows.h:17,
from
c:\go\src\github.com\andlabs\ui\redo\area_windows.go:12:
c:\mingw\include\sdkddkver.h:137:8: error: #error The _WIN32_WINNT value
does not match NTDDI_VERSION

error The _WIN32_WINNT value does not match NTDDI_VERSION

     ^

In file included from
c:\go\src\github.com\andlabs\ui\redo\area_windows.go:12:0:
winapi_windows.h:24:21: fatal error: vsstyle.h: No such file or directory
#include <vsstyle.h>
^
compilation terminated.

@andlabs
Copy link
Owner

andlabs commented Aug 19, 2014

Hm... can you try installing a mingw-w64 setup and using that? I'll investigate the issue with the vanilla MinGW folks in the meantime. Thanks.

@andlabs
Copy link
Owner

andlabs commented Aug 19, 2014

Second thought: https://www.google.com/search?client=ubuntu&channel=fs&q=mingw+vsstyles.h&ie=utf-8&oe=utf-8#channel=fs&q=mingw+vsstyles.h+-w64 looks like vanilla MinGW doesn't include vsstyle.h, so I'm going to have to mandate -w64. Sorry about that :/

@ghost
Copy link

ghost commented Sep 22, 2014

Is there a resolution to this problem? On Windows 8, 64 bit go get results in:

C:\Users\J\GoProjects\src>go get github.com/andlabs/ui
github.com/andlabs/ui
In file included from github.com\andlabs\ui\area_windows.go:12:0:
winapi_windows.h:24:21: fatal error: vsstyle.h: No such file or directory
compilation terminated.

@andlabs
Copy link
Owner

andlabs commented Sep 23, 2014

The only solution is to use Mingw-w64. The problem is MinGW has an incomplete Windows setup. Sorry :/

@andlabs andlabs closed this as completed Sep 23, 2014
@jroosing
Copy link

Would this work with msys2? I seem to have the library but i still get the same error.

@andlabs
Copy link
Owner

andlabs commented Oct 13, 2015

It should. Are you building from the MinGW-w64 32-bit/64-bit Shell or the MSYS Shell?

@jroosing
Copy link

I am building from the MSYS shell. Would that be the problem? I will certainly take a look when I am home. Thanks for your swift reply.

@andlabs
Copy link
Owner

andlabs commented Oct 14, 2015

Yes; try building from the MinGW-w64 Shell that comes with MSYS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants