CppSharp

将 C/C++ 应用程序接口粘合到高级语言的工具和库。「Tools and libraries to glue C/C++ APIs to high-level languages」

Github星跟蹤圖

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.

Support

If you need commercial support feel free to open a discussion or issue for discussion.

Users

CppSharp is used by the following projects:

Kythera AI

QtSharp

MonoGame

LLDBSharp

Xamarin

FFMPEG.net

FFmpeg bindings

Tizen bindings

libgd bindings

ChakraSharp

FFmpeg.AutoGen

GLFW3.NET

DearImguiSharp

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

主要指標

概覽
名稱與所有者mono/CppSharp
主編程語言C#
編程語言Shell (語言數: 7)
平台
許可證MIT License
所有者活动
創建於2013-05-10 19:00:56
推送於2025-04-18 02:05:24
最后一次提交
發布數51
最新版本名稱v1.1.2 (發布於 )
第一版名稱CppSharp (發布於 )
用户参与
星數3.2k
關注者數152
派生數527
提交數5.5k
已啟用問題?
問題數894
打開的問題數317
拉請求數800
打開的拉請求數26
關閉的拉請求數190
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?