Awesome Open Source
Awesome Open Source

CppSharp is a tool and set of libraries which facilitates the usage of native C/C++ code with the .NET ecosystem.

It consumes C/C++ header and library files and generates the necessary glue code to surface the native API as a managed API. Such an API can be used to consume an existing native library in your managed code or add managed scripting support to a native codebase.

The supported target languages at present are C# and C++/CLI.

It can also be used as a library to parse native code into a syntax tree with a rich declaration and type information model.

Releases/Build Status

NuGet Packages GitHub Releases Continuous Integration
NuGet GitHub release GitHub-actions
  1. Libraries
  2. Documentation
  3. Community
  4. Support
  5. Users



Mirrors the Clang's C/C++ AST and type system classes in C# APIs.

Check out Clang's AST introduction docs for more details about its architecture.

  • C++ declarations
  • C++ statements / expressions
  • C++ types
  • Class object layout
  • Declaration visitors
  • Type visitors


Provides APIs for parsing of C/C++ source code into a syntax tree.

  • Parsing of C/C++ source code
  • Parsing of libraries archives symbols
  • Parsing of shared libraries symbols
  • Based on the very accurate Clang C++ parser.


Generates the glue binding code from a syntax tree of the native code.

  • Multiple backends: C++/CLI and C# (P/Invoke)
  • Multiple ABIs: Itanium, MS, ARM, iOS
  • Multiple platforms: Windows, OS X and Linux
  • Multiple runtimes: .NET and Mono
  • C++ virtual methods overriding from managed code
  • C++ multiple inheritance by translating to C# interfaces
  • C++ std::string
  • C++ default parameter values
  • C/C++ semantic comments (Doxygen) to C# comments
  • Extensible bindings semantics via user passes and type mapping


Please see the following resources for more information:

Getting Started

User's Manual

Developer's Manual


Feel free to open up issues on Github for any problems you find.

You can also join us at our #managed-interop Gitter discussion channel.


For building wrappers and priority support please write to [email protected]. Alternatively, you may post bounties at


CppSharp is used by the following projects:





FFmpeg bindings

Tizen bindings

libgd bindings




Please feel free to send us a pull request adding your own projects to the list above.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
C Plus Plus (370,748
C Sharp (278,773
C (276,169
Dotnet (7,766
Parser (4,885
Xamarin (1,774
Parsing (1,305
Bindings (916
Clang (582
Bridge (497
Mono (395
Swig (280
Syntax Tree (199
Interop (173
Related Projects