- Notifications
You must be signed in to change notification settings - Fork524
Tools and libraries to glue C/C++ APIs to high-level languages
License
mono/CppSharp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
CppSharp is a tool and set of libraries which facilitates the usage of native C/C++ codewith the .NET ecosystem.
It consumes C/C++ header and library files and generates thenecessary glue code to surface the native API as a managed API. Such an API can beused to consume an existing native library in your managed code or addmanaged 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 arich declaration and type information model.
NuGet Packages | Continuous Integration |
---|---|
Mirrors the Clang's C/C++ AST and type system classes in C# APIs.
Check outClang'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.
About
Tools and libraries to glue C/C++ APIs to high-level languages