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 cf0a0a12d9 Merge pull request #117 from ddobrev/master 12 years ago
build Fixed examples build functions. 12 years ago
deps Added missing unit testing dependencies. 13 years ago
docs Fix some typos in the docs 12 years ago
examples Fixed examples build functions. 12 years ago
include Updated the Clix string wrapping code to the latest version with some bug fixes for empty/null strings. 12 years ago
patches This patch has been committed in Clang mainline. 13 years ago
src Improved the property generation by matching with an "is" prefix for read-write properties. 12 years ago
tests Improved the property generation by matching with an "is" prefix for read-write properties. 12 years ago
.gitignore Added an ignore rule for Make-based builds which we will have with the upcoming porting work. 12 years ago
LICENSE Update the license information. 12 years ago
README.md Released a new version. 12 years ago

README.md

CppSharp is a library that allows you to generate .NET bindings that wrap C/C++ code allowing interoperability with managed languages. This can be useful if you have an existing native codebase and want to add scripting support, or want to consume an existing native library in your managed code.

News

  • November 5th 2013 - Released a new version (329) with a lot of bug fixes for operators and vtables.

  • September 22nd 2013 - Conversion (type cast) operators wrapped (thanks to @ddobrev)

  • September 21st 2013 - Multiple inheritance now supported (thanks to @ddobrev)

  • September 11th 2013 - Added wrapping of inlined functions (thanks to @ddobrev)

  • September 11th 2013 - New binaries available for Windows (VS2012)

Binaries

VS2012 32-bit:

Getting started

The documentation is still a work-in-progress, please see the following resources for more information:

Getting Started

User's Manual

Developer's Manual

Why reinvent the wheel?

There are not many automated binding tools around, the only real alternative is SWIG. So how is it different from SWIG?

  • No need to generate a C layer to interop with C++.
  • Based on an actual C++ parser (Clang) so very accurate.
  • Understands C++ at the ABI (application binary interface) level
  • Easily extensible semantics via user passes
  • Strongly-typed customization APIs
  • Can be used as a library

Can I use it yet?

It is being used to bind "real-world" complex codebases successfully, so give it a shot.

Since C and C++ provide such a wide array of features I'm sure there's still tonnes of bugs and unsupported edge cases, but give it a try and report any bugs you find and I'll try to fix them ASAP.

Similiar Tools