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 2eeaa67712 Merge pull request #608 from grbd/master 10 years ago
build Added helper batch file for download dependencies on Windows. 10 years ago
deps Added missing unit testing dependencies. 13 years ago
docs Re-structured and updated the documentation. 10 years ago
examples Revert "Threw an exception when there are parsing errors, and handled it in the test clients." 10 years ago
include Added a cast to get rid of a warning. 12 years ago
patches Removed outdated patches. 11 years ago
src Added the ability to search the machine Path or a specified path for the library file as part of ResolveSymbol 10 years ago
tests Fixed marshaling of null UTF-32 wide strings. 10 years ago
.gitattributes Add .gitattributes 12 years ago
.gitignore Updated Git ignore patterns. 10 years ago
.travis.yml Updated the LLVM packaging scripts to use tar.xz for non-Windows builds. 10 years ago
LICENSE Update the license information. 13 years ago
README.md Added a list of CppSharp-based bindings projects. 10 years ago
appveyor.yml Updated the YML-s to use the new premake build scripts. 10 years ago

README.md

CppSharp is a collection of libraries for working with C++ code from .NET.

It has multiple use cases, from parsing C++ code to automatically generating .NET bindings for wrapping C/C++ native code allowing interoperability with managed languages like C#.

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

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

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

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.

Support

For professional services related to building custom wrappers and consulting please contact @ddobrev (dpldobrev at yahoo dot com).