a954c54a6c
Added complete support for VS 2017 |
||
---|---|---|
.github | ||
build | ||
deps | ||
docs | ||
examples/SDL | ||
include | ||
src | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
appveyor.yml |
README.md
CppSharp has been selected for participation in the Google Summer of Code 2017!
We are looking for volunteers to write code for CppSharp in the summer of 2017. Please check our task at http://www.mono-project.com/community/google-summer-of-code/projects/#cppsharp--maintenance--improvement-tasks.
CppSharp is a tool and set of libraries which allows programmmers to use C/C++ libraries with high-level programming languages (such as C#).
It is a tool that takes C/C++ header and library files and generates the necessary glue to surface the native API as a managed API. Such an API can be used to consume an existing native library in your high-level code or add 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
Windows 64-bit | Windows 32-bit | windows-vs-x86 | linux-gcc-x86_64 | osx-clang-x86 |
---|---|---|---|---|
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++ 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++ standard library types (work-in-progress)
- 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 with any questions
Mailing list: Google group
Support
For building wrappers and priority support please write to cppsharp@protonmail.com. Alternatively, you may post bounties at https://www.bountysource.com/.
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.