Tools and libraries to glue C/C++ APIs to high-level languages
Перейти к файлу
Dimitar Dobrev 48d373f10b Fixed a typing and a grammatical error in the guide to contributing.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
2017-03-06 02:15:11 +02:00
.github
build Try and fix apt-get Mono install in Travis. 2017-03-03 19:23:14 +00:00
deps Updated NUnit to the latest version (3.6) to fix a test failing at AppVeyor. 2017-02-18 02:11:52 +02: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
src Changed the generation of patched v-tables to also work for class templates. 2017-03-06 02:06:43 +02:00
tests Ensured the C# gen correctly imports a native library with no target triple. 2017-03-05 14:22:48 +02:00
.gitattributes
.gitignore Update Git ignore patterns for NUnit Nuget install. 2017-02-06 17:57:49 +00: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
README.md Removed a site for bounties which does not allow free registration. 2017-02-28 15:07:32 +02:00
appveyor.yml Changed the naming of the releases uploaded by AppVeyor. 2016-11-16 14:08:27 +02:00

README.md

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.