| 
				
					
						
							 | 
			8 years ago | |
|---|---|---|
| .github | 10 years ago | |
| build | 8 years ago | |
| deps | 9 years ago | |
| docs | 9 years ago | |
| examples/SDL | 9 years ago | |
| include | 12 years ago | |
| src | 8 years ago | |
| tests | 8 years ago | |
| .gitattributes | 12 years ago | |
| .gitignore | 9 years ago | |
| .travis.yml | 9 years ago | |
| CONTRIBUTING.md | 9 years ago | |
| LICENSE | 10 years ago | |
| README.md | 9 years ago | |
| appveyor.yml | 8 years ago | |
		
			
				
				README.md
			
		
		
			
			
		
	
	CppSharp has been selected for participation in the Google Summer of Code 2017!
CppSharp is a tool and set of libraries which allows programmers to use C/C++ libraries with high-level programming languages (such as C#).
It is a tool that takes C/C++ header and library files and generates the necessary glue to surface the native API as a managed API. Such an API can be used to consume an existing native library in your high-level code or add 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
| Windows 64-bit | Windows 32-bit | windows-vs-x86 | linux-gcc-x86_64 | osx-clang-x86 | 
|---|---|---|---|---|
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++ 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:
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:
Please feel free to send us a pull request adding your own projects to the list above.