Tools and libraries to glue C/C++ APIs to high-level languages
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Dimitar Dobrev 2352681f5b Fixed a regression causing objects to be missing at virtual calls. 10 years ago
.github Created a template for new issues. 10 years ago
build Run the AST tests under Travis. 10 years ago
deps Update bundled NUnit to Nuget version. 10 years ago
docs Update GettingStarted.md 10 years ago
examples/SDL Clean option setup in SDL example. 10 years ago
include Added a cast to get rid of a warning. 12 years ago
src Fixed a regression causing objects to be missing at virtual calls. 10 years ago
tests Fixed a regression causing objects to be missing at virtual calls. 10 years ago
.gitattributes Add .gitattributes 12 years ago
.gitignore Update Git ignore patterns for NUnit Nuget install. 10 years ago
.travis.yml Fixed build directory path when copying test libraries in Travis. 10 years ago
LICENSE Clarified that the license of CppSharp is MIT. 10 years ago
README.md Add link to ChakraSharp in readme (#761) 10 years ago
appveyor.yml Changed the naming of the releases uploaded by AppVeyor. 10 years ago

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.

Users

CppSharp is used by the following projects:

QtSharp

MonoGame

LLDBSharp

Xamarin

FFMPEG.net

FFmpeg bindings

Tizen bindings

libgd bindings

ChakraSharp

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