Tools and libraries to glue C/C++ APIs to high-level languages
Перейти к файлу
João Matos a954c54a6c Merge pull request #790 from realvictorprm/master
Added complete support for VS 2017
2017-03-15 19:06:39 +00:00
.github Created a template for new issues. 2016-04-10 17:26:51 +03:00
build Implemented mapping of MSVC to VS 2017 in build scripts. 2017-03-13 14:52:05 +00:00
deps Added complete support for VS 2017 2017-03-15 20:03:18 +01:00
docs Obsoleted the direct settings for wrapped libraries in the options. 2017-03-04 00:35:53 +02:00
examples/SDL Clean option setup in SDL example. 2017-01-10 16:22:28 +00:00
include Added a cast to get rid of a warning. 2014-05-10 11:21:14 +01:00
src Merge pull request #790 from realvictorprm/master 2017-03-15 19:06:39 +00:00
tests Fixed the generated C# for an array of const char*. 2017-03-14 15:42:28 +02:00
.gitattributes Add .gitattributes 2014-05-12 10:09:41 +03:00
.gitignore Added complete support for VS 2017 2017-03-15 20:03:18 +01:00
.travis.yml Source the Mono install script in Travis. 2017-02-19 12:38:46 +00:00
CONTRIBUTING.md Fixed a typing and a grammatical error in the guide to contributing. 2017-03-06 02:15:11 +02:00
LICENSE Clarified that the license of CppSharp is MIT. 2016-06-12 19:44:18 +03:00
README.md Added a note about CppSharp in the Google Summer of Code 2017 2017-03-14 22:49:49 +02:00
appveyor.yml Changed the naming of the releases uploaded by AppVeyor. 2016-11-16 14:08:27 +02:00

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
NuGet GitHub release windows-vs-x86 linux-gcc-x86_64 osx-clang-x86
  1. Libraries
  2. Documentation
  3. Community
  4. Support
  5. Users

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:

Getting Started

User's Manual

Developer's Manual

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:

QtSharp

MonoGame

LLDBSharp

Xamarin

FFMPEG.net

FFmpeg bindings

Tizen bindings

libgd bindings

ChakraSharp

FFmpeg.AutoGen

Please feel free to send us a pull request adding your own projects to the list above.