All Projects → mono → Cppsharp

mono / Cppsharp

Licence: mit
Tools and libraries to glue C/C++ APIs to high-level languages

Programming Languages

c
50402 projects - #5 most used programming language
C#
18002 projects
C++
36643 projects - #6 most used programming language
lua
6591 projects
javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Cppsharp

Embeddinator 4000
Tools to turn .NET libraries into native libraries that can be consumed on Android, iOS, Mac, Linux and other platforms.
Stars: ✭ 735 (-66.91%)
Mutual labels:  bindings, xamarin, mono, interop
Libdparse
Library for lexing and parsing D source code
Stars: ✭ 91 (-95.9%)
Mutual labels:  syntax-tree, parser, parsing
Escaya
An blazing fast 100% spec compliant, incremental javascript parser written in Typescript
Stars: ✭ 217 (-90.23%)
Mutual labels:  syntax-tree, parser, parsing
Kgt
BNF wrangling and railroad diagrams
Stars: ✭ 312 (-85.95%)
Mutual labels:  syntax-tree, parser, parsing
Graphql Go Tools
Tools to write high performance GraphQL applications using Go/Golang.
Stars: ✭ 96 (-95.68%)
Mutual labels:  parser, parsing
Net Vips
.NET binding for libvips
Stars: ✭ 173 (-92.21%)
Mutual labels:  bindings, mono
Sywac
🚫 🐭 Asynchronous, single package CLI framework for Node
Stars: ✭ 109 (-95.09%)
Mutual labels:  parser, parsing
Whois Parser
Go(Golang) module for domain whois information parsing.
Stars: ✭ 123 (-94.46%)
Mutual labels:  parser, parsing
Parsing With Haskell Parser Combinators
🔍 A step-by-step guide to parsing using Haskell parser combinators.
Stars: ✭ 72 (-96.76%)
Mutual labels:  parser, parsing
Expressive
Expressive is a cross-platform expression parsing and evaluation framework. The cross-platform nature is achieved through compiling for .NET Standard so it will run on practically any platform.
Stars: ✭ 113 (-94.91%)
Mutual labels:  parsing, xamarin
Dan Jurafsky Chris Manning Nlp
My solution to the Natural Language Processing course made by Dan Jurafsky, Chris Manning in Winter 2012.
Stars: ✭ 124 (-94.42%)
Mutual labels:  parser, parsing
Xamarin Forms Gtk Movies Sample
The Movie DB Xamarin.Forms Sample
Stars: ✭ 83 (-96.26%)
Mutual labels:  xamarin, mono
Lodestone Nodejs
Character tracking and parser library for nodejs
Stars: ✭ 81 (-96.35%)
Mutual labels:  parser, parsing
Mini Yaml
Single header YAML 1.0 C++11 serializer/deserializer.
Stars: ✭ 79 (-96.44%)
Mutual labels:  parser, parsing
Parjs
JavaScript parser-combinator library
Stars: ✭ 145 (-93.47%)
Mutual labels:  parser, parsing
Crossplatformdisktest
Windows, macOS and Android storage (HDD, SSD, RAM) speed testing/performance benchmarking app
Stars: ✭ 123 (-94.46%)
Mutual labels:  xamarin, mono
Xamarin.bindings
A list of existing Xamarin binding libraries.
Stars: ✭ 146 (-93.43%)
Mutual labels:  bindings, xamarin
Megaapiclient
MegaApiClient is a C# .Net library to access http://mega.co.nz / http://mega.nz cloud storage and file hosting service.
Stars: ✭ 151 (-93.2%)
Mutual labels:  xamarin, mono
Command Line Api
Command line parsing, invocation, and rendering of terminal output.
Stars: ✭ 2,418 (+8.87%)
Mutual labels:  parser, parsing
Parser Javascript
Browser sniffing gone too far — A useragent parser library for JavaScript
Stars: ✭ 66 (-97.03%)
Mutual labels:  parser, parsing

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 [email protected]. 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].