2019-12-10 17:28:47 +03:00
|
|
|
CppSharp is a tool and set of libraries which facilitates the usage of native C/C++ code
|
|
|
|
with the .NET ecosystem.
|
2015-06-02 15:19:53 +03:00
|
|
|
|
2019-12-10 17:28:47 +03:00
|
|
|
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.
|
2013-05-06 06:02:12 +04:00
|
|
|
|
2017-01-17 01:51:57 +03:00
|
|
|
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.
|
2015-02-26 01:27:15 +03:00
|
|
|
|
2017-01-22 00:18:31 +03:00
|
|
|
## Releases/Build Status
|
|
|
|
|
2021-11-06 00:45:31 +03:00
|
|
|
| NuGet Packages | Continuous Integration |
|
|
|
|
|---------------------------|---------------------------|
|
|
|
|
| [![NuGet](https://img.shields.io/nuget/v/CppSharp.svg)](https://www.nuget.org/packages/CppSharp/) | [![GitHub-actions](https://github.com/mono/CppSharp/workflows/CI/badge.svg)](https://github.com/mono/CppSharp/actions?query=workflow%3ACI)
|
2017-01-22 00:18:31 +03:00
|
|
|
|
2016-04-10 19:08:57 +03:00
|
|
|
1. [Libraries](#libraries)
|
|
|
|
2. [Documentation](#documentation)
|
|
|
|
3. [Community](#community)
|
|
|
|
4. [Support](#support)
|
|
|
|
5. [Users](#users)
|
|
|
|
|
2015-06-21 05:45:08 +03:00
|
|
|
## Libraries
|
|
|
|
|
2013-11-16 07:47:33 +04:00
|
|
|
### AST
|
2013-09-11 17:14:43 +04:00
|
|
|
|
2017-01-17 01:51:57 +03:00
|
|
|
Mirrors the Clang's C/C++ AST and type system classes in C# APIs.
|
2013-09-21 01:46:02 +04:00
|
|
|
|
2017-01-17 01:51:57 +03:00
|
|
|
Check out [_Clang's AST introduction docs_](http://clang.llvm.org/docs/IntroductionToTheClangAST.html) for more details about its architecture.
|
2013-11-16 07:47:33 +04:00
|
|
|
|
|
|
|
* C++ declarations
|
2019-02-24 20:38:00 +03:00
|
|
|
* C++ statements / expressions
|
2013-11-16 07:47:33 +04:00
|
|
|
* C++ types
|
|
|
|
* Class object layout
|
|
|
|
* Declaration visitors
|
|
|
|
* Type visitors
|
2013-09-11 17:14:43 +04:00
|
|
|
|
2013-11-16 07:47:33 +04:00
|
|
|
### Parser
|
2013-08-14 03:39:00 +04:00
|
|
|
|
2017-01-17 01:51:57 +03:00
|
|
|
Provides APIs for parsing of C/C++ source code into a syntax tree.
|
2013-09-17 16:02:19 +04:00
|
|
|
|
2017-01-17 01:51:57 +03:00
|
|
|
* Parsing of C/C++ source code
|
2013-11-16 07:47:33 +04:00
|
|
|
* Parsing of libraries archives symbols
|
|
|
|
* Parsing of shared libraries symbols
|
|
|
|
* Based on the very accurate Clang C++ parser.
|
2017-01-17 01:51:57 +03:00
|
|
|
|
|
|
|
### Generator
|
|
|
|
|
|
|
|
Generates the glue binding code from a syntax tree of the native code.
|
2013-11-16 07:47:33 +04:00
|
|
|
|
2017-01-17 01:51:57 +03:00
|
|
|
* 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
|
2017-06-16 19:08:36 +03:00
|
|
|
* C++ std::string
|
2017-01-17 01:51:57 +03:00
|
|
|
* C++ default parameter values
|
|
|
|
* C/C++ semantic comments (Doxygen) to C# comments
|
|
|
|
* Extensible bindings semantics via user passes and type mapping
|
|
|
|
|
2013-11-16 07:47:33 +04:00
|
|
|
## Documentation
|
2013-08-14 03:39:00 +04:00
|
|
|
|
2015-06-21 05:45:08 +03:00
|
|
|
Please see the following resources for more information:
|
2013-08-14 03:39:00 +04:00
|
|
|
|
|
|
|
[Getting Started](docs/GettingStarted.md)
|
|
|
|
|
|
|
|
[User's Manual](docs/UsersManual.md)
|
|
|
|
|
|
|
|
[Developer's Manual](docs/DevManual.md)
|
|
|
|
|
2015-06-21 05:45:08 +03:00
|
|
|
## Community
|
|
|
|
|
2023-10-21 21:33:13 +03:00
|
|
|
Feel free to open up issues on GitHub for any problems you find.
|
2016-01-12 23:45:52 +03:00
|
|
|
|
2016-04-10 19:08:57 +03:00
|
|
|
## Support
|
|
|
|
|
2023-10-21 21:33:13 +03:00
|
|
|
If you need commercial support feel free to open a discussion or issue for discussion.
|
2016-04-10 19:08:57 +03:00
|
|
|
|
2016-01-12 23:45:52 +03:00
|
|
|
## Users
|
|
|
|
|
|
|
|
CppSharp is used by the following projects:
|
|
|
|
|
2023-09-29 20:39:37 +03:00
|
|
|
[Kythera AI](https://kythera.ai)
|
|
|
|
|
2016-04-10 19:08:57 +03:00
|
|
|
[QtSharp](https://gitlab.com/ddobrev/QtSharp)
|
2016-01-12 23:45:52 +03:00
|
|
|
|
|
|
|
[MonoGame](https://github.com/mono/MonoGame)
|
|
|
|
|
|
|
|
[LLDBSharp](https://github.com/tritao/LLDBSharp)
|
|
|
|
|
|
|
|
[Xamarin](http://xamarin.com/)
|
|
|
|
|
|
|
|
[FFMPEG.net](https://github.com/crazyender/FFMPEG.net)
|
|
|
|
|
|
|
|
[FFmpeg bindings](https://github.com/InitialForce/FFmpeg_bindings)
|
|
|
|
|
|
|
|
[Tizen bindings](https://github.com/kitsilanosoftware/CppSharpTizen)
|
2015-06-21 05:45:08 +03:00
|
|
|
|
2016-01-12 23:45:52 +03:00
|
|
|
[libgd bindings](https://github.com/imazen/deprecated-gd-bindings-generator-old)
|
2015-06-21 05:45:08 +03:00
|
|
|
|
2017-02-15 23:05:24 +03:00
|
|
|
[ChakraSharp](https://github.com/baristalabs/ChakraSharp)
|
|
|
|
|
2017-02-19 18:58:53 +03:00
|
|
|
[FFmpeg.AutoGen](https://github.com/Ruslan-B/FFmpeg.AutoGen)
|
|
|
|
|
2017-03-15 23:06:52 +03:00
|
|
|
[GLFW3.NET](https://github.com/realvictorprm/GLFW3.NET)
|
|
|
|
|
2023-10-21 21:33:13 +03:00
|
|
|
[DearImguiSharp](https://github.com/Sewer56/DearImguiSharp)
|
|
|
|
|
2016-01-12 23:45:52 +03:00
|
|
|
Please feel free to send us a pull request adding your own projects to the list above.
|