Tools and libraries to glue C/C++ APIs to high-level languages
Перейти к файлу
Dimitar Dobrev f1915b3066 Generate valid C# for templates with external specializations only
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
2021-12-28 22:11:55 +02:00
.github Drop CI with windows 32-bit because of premake 2021-12-27 16:09:53 +02:00
build Update LLVM to the latest version 2021-12-08 16:44:31 +02:00
docs Update UsersManual.md 2021-07-23 16:04:38 +01:00
examples Remove QuickJS example, we have proper tests now. 2020-12-15 02:51:42 +00:00
include document syntax warning 2021-03-13 08:32:09 +00:00
src Generate valid C# for templates with external specializations only 2021-12-28 22:11:55 +02:00
tests Generate valid C# for templates with external specializations only 2021-12-28 22:11:55 +02:00
tests2 Add work-in-progress TypeScript interface bindings generator. 2021-02-21 02:50:43 +00:00
.gitattributes Add .gitattributes 2014-05-12 10:09:41 +03:00
.gitignore Attempt to resolve a GitHub CI Actions isue: CI is currently failing because restore can't find NUnit and friends. The error message and google search indicate that GitHub Actions is only looking in the "Microsoft Visual Studio Offline Packages" cache. Add a nuget.config file to in an attempt to tell GitHub Actions to query nuget.org in addition to the offline cache. 2021-04-15 09:15:38 +01:00
.gitmodules Initial integration of Clang AST viewer GUI tool. 2019-01-25 10:23:31 +00:00
CHANGELOG.md Document release 1.0 2021-10-12 13:10:37 +03:00
CONTRIBUTING.md Fixed a typing and a grammatical error in the guide to contributing. 2017-03-06 02:15:11 +02:00
CppSharp.code-workspace Add CppSharp VS Code workspace. 2021-02-21 02:50:43 +00:00
Directory.Build.props Remove win x86 from the NuGet for smaller size (#1550) 2020-12-15 20:02:12 +02:00
Directory.Packages.props Update NuGet dependencies 2021-10-24 13:05:42 +03:00
LICENSE Clarified that the license of CppSharp is MIT. 2016-06-12 19:44:18 +03:00
README.md Remove the badge for the unused github releases 2021-11-05 23:45:31 +02:00
nuget.config Attempt to resolve a GitHub CI Actions isue: CI is currently failing because restore can't find NUnit and friends. The error message and google search indicate that GitHub Actions is only looking in the "Microsoft Visual Studio Offline Packages" cache. Add a nuget.config file to in an attempt to tell GitHub Actions to query nuget.org in addition to the offline cache. 2021-04-15 09:15:38 +01:00

README.md

CppSharp is a tool and set of libraries which facilitates the usage of native C/C++ code with the .NET ecosystem.

It consumes C/C++ header and library files and generates the necessary glue code to surface the native API as a managed API. Such an API can be used to consume an existing native library in your managed code or add managed scripting support to a native codebase.

The supported target languages at present are C# and C++/CLI.

It can also be used as a library to parse native code into a syntax tree with a rich declaration and type information model.

Releases/Build Status

NuGet Packages Continuous Integration
NuGet GitHub-actions
  1. Libraries
  2. Documentation
  3. Community
  4. Support
  5. Users

Libraries

AST

Mirrors the Clang's C/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++ statements / expressions
  • C++ types
  • Class object layout
  • Declaration visitors
  • Type visitors

Parser

Provides APIs for parsing of C/C++ source code into a syntax tree.

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

Generator

Generates the glue binding code from a syntax tree of the native code.

  • Multiple backends: C++/CLI and C# (P/Invoke)
  • Multiple ABIs: Itanium, MS, ARM, iOS
  • Multiple platforms: Windows, OS X and Linux
  • Multiple runtimes: .NET and Mono
  • C++ virtual methods overriding from managed code
  • C++ multiple inheritance by translating to C# interfaces
  • C++ std::string
  • C++ default parameter values
  • C/C++ semantic comments (Doxygen) to C# comments
  • Extensible bindings semantics via user passes and type mapping

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 for any problems you find.

You can also join us at our #managed-interop Gitter discussion channel.

Support

For building wrappers and priority support please write to cppsharp@protonmail.com. Alternatively, you may post bounties at https://www.bountysource.com/.

Users

CppSharp is used by the following projects:

QtSharp

MonoGame

LLDBSharp

Xamarin

FFMPEG.net

FFmpeg bindings

Tizen bindings

libgd bindings

ChakraSharp

FFmpeg.AutoGen

GLFW3.NET

Please feel free to send us a pull request adding your own projects to the list above.