81e0a931cf
* Don't add values to enums that can't be parsed * Fix test case * Oops |
||
---|---|---|
.github | ||
build | ||
docs | ||
examples | ||
include | ||
src | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
CppSharp.code-workspace | ||
Directory.Build.props | ||
Directory.Packages.props | ||
LICENSE | ||
README.md | ||
nuget.config | ||
version.json |
README.md
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 | Continuous Integration |
---|---|
Libraries
AST
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
Parser
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.
Generator
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
Documentation
Please see the following resources for more information:
Community
Feel free to open up issues on GitHub for any problems you find.
Support
If you need commercial support feel free to open a discussion or issue for discussion.
Users
CppSharp is used by the following projects:
Please feel free to send us a pull request adding your own projects to the list above.