ClangSharp
Biohazrd
Our great sponsors
ClangSharp | Biohazrd | |
---|---|---|
5 | 1 | |
851 | 58 | |
2.1% | - | |
8.6 | 0.0 | |
2 months ago | about 1 year ago | |
C# | C# | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ClangSharp
-
The future of Clang-based tooling
One of the most surprising things I learned about "clang" was how relatively poor the "libClang" capabilities are.
I wanted to write a codegen tool that would auto-generate bindings for C++ code, and it turns out that "libTooling" is the only reasonable way to get access to the proper info you need from C++.
Another alternative is "libClangSharp", from Tanner Gooding who works on C# at Microsoft.
-
How to make C# bindings for C++ libs
Bindings for C++ are tricky due to function name mangling and also due to ABI compat, it's basically impossible to interop with a std::vector for example. Afaik the most common approach is to PInvoke thin C wrappers around the C++ functions. There are tons of binding generators for this but they aren't without problems (not worth if you have a small API surface).
-
C# calling C Shared Library
3: Throwing my work away and using ClangSharpto create the bindings, unfortunately the header file for the shared library lists other C library's that I can not find online such as > #include
-
Genny – Generate Nim library bindings for many languages
I've found this to be true, with the exception that a few people have taken to "augmenting" libclang with extra bindings to libTooling functions or other C++-only methods.
Most notably is Tanner Gooding & Co's "libClangSharp" from the Microsoft "ClangSharp" project, and PathogenDavid's "Biohazrd" libraries (which again are a sort of enhanced fork based on ClangSharp):
https://github.com/microsoft/ClangSharp # See "/sources/libClangSharp"
-
How can I use C definitions in .NET 5?
If you want to go down that route, clangsharp can do this for you.
Biohazrd
-
Genny – Generate Nim library bindings for many languages
https://github.com/InfectedLibraries/Biohazrd
What are some alternatives?
CsWin32 - A source generator to add a user-defined set of Win32 P/Invoke methods and supporting types to a C# project.
nimterop - Nimterop is a Nim package that aims to make C/C++ interop seamless
genny - Generate a shared library and bindings for many languages.
c2nim - c2nim is a tool to translate Ansi C code to Nim. The output is human-readable Nim code that is meant to be tweaked by hand before and after the translation process.
CppSharp - Tools and libraries to glue C/C++ APIs to high-level languages
cakeml - CakeML: A Verified Implementation of ML
binder - Binder, tool for automatic generation of Python bindings
nimporter - Compile Nim Extensions for Python On Import!