win32metadata VS cppwin32

Compare win32metadata vs cppwin32 and see what are their differences.

win32metadata

Tooling to generate metadata for Win32 APIs in the Windows SDK. (by microsoft)

cppwin32

A modern C++ projection for the Win32 SDK (by microsoft)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
win32metadata cppwin32
27 15
1,280 395
1.3% -
0.0 5.5
13 days ago over 3 years ago
C++ C++
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

win32metadata

Posts with mentions or reviews of win32metadata. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-02.
  • Hey Rustaceans! Got a question? Ask here (18/2023)!
    5 projects | /r/rust | 2 May 2023
    As /u/huellenoperator notes, that this needs a pointer to a mutable string comes straight from microsoft through win32metadata. Maybe it's a mistake on Microsoft's side, but if it's not you're taking big risks.
  • Kernel Headers for Windows could soon make it into windows-rs
    5 projects | /r/rust | 22 Feb 2023
    Microsoft offers official "bindings" to Win32 APIs through win32metadata. However, until recently, it did not include metadata for kernel-level functions or WDK. In early 2021, an issue was raised through windows-rs regarding this limitation, but progress was slow until now. Microsoft has finally released official metadata for WDK, which can be found on the wdkmetadata repository. The latest comment on the issue thread can be found here:
  • winreader: read memory from other programs
    3 projects | /r/rust | 2 Feb 2023
    for win32metadata's kernel api tracking issue, https://github.com/microsoft/win32metadata/issues/401
  • Best windows stubs
    2 projects | /r/rust | 27 Jan 2023
    Any examples? Since the API bindings in windows-sys are generated from the metadata generated from official Windows SDK headers I'd not expect to see this kind of difference.
  • can we be free of c?
    1 project | /r/ProgrammingLanguages | 18 Nov 2022
    You might also look at this project: https://github.com/microsoft/win32metadata
  • Is it time to retire C and C++ for Rust in new programs?
    2 projects | news.ycombinator.com | 28 Sep 2022
    There is still the occasional incredibly subtle link time fuckery in Rust.

    https://github.com/microsoft/win32metadata/issues/1274

    "Minor" semver updates to crates breaking things via e.g. unexpected MSRV bumps is pretty common too, with some resulting bitrot. That said, I agree with you that things in Rust are at least better. Imperfect, but better.

  • Are there any Windows-centric perks of using C# that other non-Microsoft languages simply can't offer (or at least don't out of the box)?
    1 project | /r/AskProgramming | 7 Aug 2022
    Win32 is available as metadata to enable adoption in as many languages as possible. Are there some things missing? Yes. The Microsoft team acknowledges that and encourages asking for the things you need so they can add them to the metadata.
  • Using Windows API in Julia?
    3 projects | /r/Julia | 1 Feb 2022
    It might be interesting to have bindings generated for the entirety of Win32 API through https://github.com/microsoft/win32metadata
  • Would std code for Windows ever use the windows crate by Microsoft?
    6 projects | /r/rust | 22 Dec 2021
  • The Atrocities of COM win32 headers
    9 projects | news.ycombinator.com | 18 Dec 2021
    Hi JB! Funny to cross paths with you in this context. I don't know if you remember me but I was a rookie programmer who got the pleasure of joining the VideoLan Conference in Dublin back in 2014, and then Paris the next year, and you were very kind to me.

    The GitHub issue title here is unfortunately misleading. I have renamed it to "ideas to improve windows header files and libc". Also, I hope it is clear that I rebutted the points made by the OP, because I completely agree with your summary that the mingw-w64 people are skilled, nice and very clever and think about all use cases.

    If any drive-by HN readers work at Microsoft, please help us with this issue: https://github.com/microsoft/win32metadata/issues/766

cppwin32

Posts with mentions or reviews of cppwin32. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-03.
  • MSVC C++23 Update
    3 projects | /r/cpp | 3 Jun 2023
    I would imagine something like https://github.com/microsoft/cppwin32 would maybe be an easier way forward for that?
  • TIL we can prevent macro invocation by placing the function name in parentheses
    3 projects | /r/cpp | 21 May 2023
    no, Microsoft has rewritten the windows API in C++ I think https://github.com/microsoft/cppwin32
  • A brief interview with Tcl creator John Ousterhout
    9 projects | news.ycombinator.com | 10 Feb 2023
    An official work in progress Windows binding, still far behind of what C# existing bindings are capable of, or legacy toolkits like MFC.

    Also given how the team has managed C++/CX transition to C++/WinRT with lesser tooling stuck on C++17, dropped Modern C++ bindings [0][1], before going into other shinny thing, I wonder how long they will keep at it.

    [0] - https://blogs.windows.com/windowsdeveloper/2021/01/21/making...

    [1] - https://github.com/microsoft/cppwin32

  • VS2022 how to make Windows C++ (like VB) program
    1 project | /r/cpp_questions | 26 Jan 2023
    If you want to use the old tooling, your C++ is going to be very "C with classes," and it's going to use a lot of weird datatypes that don't feel very C++ at all. Microsoft had a project for wrapping the Windows API in idiomatic C++, but appear to have abandoned it. If you choose to go down this road, Charles Petzold's Programming Windows is the book to get. Yes, it's 25 years old, but all the new stuff is just new COM controls (which you can look up in the API documentation)--the fundamentals of making a Windows API program work seriously have not changed.
  • Windows API as a C++ module ?
    3 projects | /r/cpp_questions | 12 Nov 2022
    Even Rust has a native projection of the windows API (which is actually pretty usable). This projection has the same roots as the C++ projection mentioned by u/amnesiac0x07C5. So I don't believe macros are a blocker here.
  • Win32 strings
    1 project | /r/cpp_questions | 6 Apr 2022
    See : https://github.com/microsoft/cppwin32
  • Wanting to get started
    2 projects | /r/cpp_questions | 27 Jan 2022
    Microsoft have recently put decent effort into making the Windows APIs more accessible to C++ users. One of these efforts is called C++/WinRT, and it specifically targets applications intended for "modern" Windows (Windows 8 and later). There's another effort underway at Microsoft for making the older Win32 API more C++-friendly, but it isn't documented nearly as well.
  • How to use C++ HANDLE event
    2 projects | /r/cpp_questions | 25 Jan 2022
    There is a similar project for C++, but it sadly seems to be dead already. The last commit was one year ago.
  • [Belay the C++] windows.h breaks the STL (and my will to live)
    9 projects | /r/cpp | 11 May 2021
    not that hard to wrap windows.h and undef the annoying stuff, and only a handful of files in your codebase will include it anyway. on the other hand stuff like this looks extremely worse and exactly like the kind of c++ that is hard banned in gamedev codebases
  • Microsoft is working on making the Win32 api available for use in modern C++
    5 projects | /r/cpp | 21 Jan 2021
    They are, actually, it's linked from the article: https://github.com/microsoft/cppwin32

What are some alternatives?

When comparing win32metadata and cppwin32 you can also consider the following projects:

rust-bindgen - Automatically generates Rust FFI bindings to C (and some C++) libraries.

winapi - Windows API declarations without <windows.h>, for internal Boost use.

JNA - Java Native Access

imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

go - The Go programming language

wil - Windows Implementation Library

STL - MSVC's implementation of the C++ Standard Library.

zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

go-figure - Prints ASCII art from text.

panama-foreign - https://openjdk.org/projects/panama

EA Standard Template Library - EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance.