Skip to content
This repository has been archived by the owner on Aug 18, 2021. It is now read-only.
/ CppSharp Public archive
forked from mono/CppSharp

Tools to surface C++ APIs to C#

License

Notifications You must be signed in to change notification settings

stephenatwork/CppSharp

 
 

Repository files navigation

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
  • Support for C++ standard library types (work-in-progress)
  • 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 <[email protected]>.

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.

About

Tools to surface C++ APIs to C#

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 90.0%
  • C++ 9.5%
  • Lua 0.5%
  • Ruby 0.0%
  • Batchfile 0.0%
  • C 0.0%