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.
| NuGet Packages | Continuous Integration | 
|---|---|
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:
Feel free to open up issues on GitHub for any problems you find.
If you need commercial support feel free to open a discussion or issue for discussion.
CppSharp is used by the following projects:
Please feel free to send us a pull request adding your own projects to the list above.