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.
 
 
 
 
 
Joao Matos b23fd0d21d Update Git ignore patterns for NUnit Nuget install. 10 years ago
.github Created a template for new issues. 10 years ago
build Do not write NUnit XML result files when running tests. 10 years ago
deps Revert "Extended the auto-compilation to add module initialisers, if any." 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 Modify CovariantTypeComparer to be a pass and remove dummy visitor implementations. 10 years ago
tests Fix indentation for some test cases. 10 years ago
.gitattributes Add .gitattributes 12 years ago
.gitignore Update Git ignore patterns for NUnit Nuget install. 10 years ago
.travis.yml Use the test runner script in Travis CI. 10 years ago
LICENSE Clarified that the license of CppSharp is MIT. 10 years ago
README.md Added our releases to the README. 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

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