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.
 
 
 
 
 
João Matos 1893c61537 Update provision scripts to use CMake 3.6.1 and download the package on Linux. 9 years ago
.github Created a template for new issues. 10 years ago
build Update provision scripts to use CMake 3.6.1 and download the package on Linux. 9 years ago
deps Added missing unit testing dependencies. 13 years ago
docs Documentation updates. 10 years ago
examples Added support for directly wrapping entire sets of interdependent libraries. 10 years ago
include Added a cast to get rid of a warning. 12 years ago
patches Removed outdated patches. 11 years ago
src Ensured the system module only contains units from the current run. 9 years ago
tests Fixed the generated C# code when a default arg with an ignored expression is preceded by another default arg. 9 years ago
.gitattributes Add .gitattributes 12 years ago
.gitignore Updated Git ignore patterns. 10 years ago
.travis.yml Switched to the latest at present stable Mono (4.2.1) for the OS X build. 10 years ago
LICENSE Clarified that the license of CppSharp is MIT. 10 years ago
README.md Documented the support for default parameters. 10 years ago
appveyor.yml Fix AppVeyor builds by invoking VS 2013 command prompt environment. 10 years ago

README.md

CppSharp is a collection of libraries for working with C++ code from high-level languages.

It has multiple use cases, from parsing C++ code to automatically generating bindings for wrapping C/C++ native code allowing interoperability with high-level languages. The supported target languages at present are C# (hence the name of the project) and C++/CLI.

This can be used to consume an existing native library in your high-level code or add scripting support to a native codebase.

  1. Libraries
  2. Documentation
  3. Community
  4. Support
  5. Users

Build Status

windows-vs-x86 linux-gcc-x86_64 osx-clang-x86
windows-vs-x86 linux-gcc-x86_64 osx-clang-x86

Libraries

Generator

  • Multiple backends: C++/CLI and C# P/Invoke
  • Multiple ABIs: Itanium, MS, ARM, iOS and iOS64
  • Multiple platforms: Windows, OS X and Linux
  • Virtual table overriding support
  • Multiple inheritance support
  • Easily extensible semantics via user passes
  • Work-in-progress support for STL (C++/CLI only)
  • Strongly-typed customization APIs and type maps
  • Default values of parameters (for target languages which support them)

AST

Mirrors the Clang's 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 C++ source code.

  • Parsing of C++ source code
  • Parsing of libraries archives symbols
  • Parsing of shared libraries symbols
  • Based on the very accurate Clang C++ parser.

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 contact @ddobrev <dpldobrev@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.