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 4cc60bed2a Fixed the pass for multiple inheritance to keep original functions. 10 years ago
build Only try to use .NET framework 4.6 when targeting VS 2015. 10 years ago
deps Added missing unit testing dependencies. 12 years ago
docs Moved the LLVM and Clang commits to separate files. 10 years ago
examples Kill the old parser (good riddance :). 11 years ago
include Added a cast to get rid of a warning. 11 years ago
patches Removed outdated patches. 11 years ago
src Fixed the pass for multiple inheritance to keep original functions. 10 years ago
tests Skipped patching of v-tables for objects not put in the native-managed map. 10 years ago
.gitattributes Add .gitattributes 11 years ago
.gitignore Added VS2015/.net 4.6 support for project files generation 10 years ago
.travis.yml Pass the -nologo option to NUnit so we get less verbose output. 10 years ago
LICENSE Update the license information. 12 years ago
README.md Added OSX Travis build badge. 10 years ago
appveyor.yml Setup Git AutoCrLf and user credentials for Git push in AppVeyor. 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 if you're not familiar with the 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

Mailing list: Google group

News

2nd, June 2015: We're having three students contributing to the project this summer, as part of Google Summer of Code.

Support

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