2017-03-14 23:49:49 +03:00
**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.
2017-01-18 00:08:41 +03:00
CppSharp is a tool and set of libraries which allows programmmers to use
C/C++ libraries with high-level programming languages (such as C#).
2015-06-02 15:19:53 +03:00
2017-01-17 01:51:57 +03:00
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.
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
|Windows 64-bit|Windows 32-bit| windows-vs-x86 | linux-gcc-x86_64 | osx-clang-x86 |
|---------------------------|---------------------------|---------------------------|-----------------------------|-----------------------------|
| [![NuGet][1]][2] | [![GitHub release][3]][4] | [![windows-vs-x86][5]][6] | [![linux-gcc-x86_64][7]][8] | [![osx-clang-x86][7]][8]
[1]: https://img.shields.io/nuget/v/CppSharp.svg
[2]: https://www.nuget.org/packages/CppSharp/
[3]: https://img.shields.io/github/release/mono/CppSharp.svg
[4]: https://github.com/mono/CppSharp/releases
[5]: https://ci.appveyor.com/api/projects/status/5o9gxjcttuaup671/branch/master?svg=true
[6]: https://ci.appveyor.com/project/tritao/CppSharp/branch/master
[7]: https://travis-ci.org/mono/CppSharp.svg?branch=master
[8]: https://travis-ci.org/mono/CppSharp
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
* 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
* 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
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
2016-01-12 23:45:52 +03:00
Feel free to open up issues on Github with any questions
2015-06-21 05:45:08 +03:00
Mailing list: [Google group ](https://groups.google.com/forum/#!forum/cppsharp-list )
2016-04-10 19:08:57 +03:00
## Support
2016-12-15 19:17:12 +03:00
For building wrappers and priority support please write to c p p s h a r p @ p r o t o n m a i l . c o m .
2017-02-28 16:07:32 +03:00
Alternatively, you may post bounties at https://www.bountysource.com/.
2016-04-10 19:08:57 +03:00
2016-01-12 23:45:52 +03:00
## Users
CppSharp is used by the following projects:
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 )
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.