Conari 1.3.0

[ Conari ] Binder of Unmanaged code for .NET

       Binder of Unmanaged code for .NET
       The Conari engine represents flexible platform for work with unmanaged code (native C/C++ etc.): Libraries, Executable Modules, other native and binary data.
       Lightweight and powerful binding with any exported functions and much more.
       _ _ _ _ _ _
       Source code and all details here:

New version of Conari engine contains major improvements and fixes with DLR features, ByRef types, new support of Exported-Variables, Aliases, improved Native.Core, ... But it also contains minor incompatible changes with previous versions. Look here:

       Get it via GetNuTool:
       gnt /p:ngpackages="Conari/1.3.0"

Install-Package Conari -Version 1.3.0
dotnet add package Conari --version 1.3.0
<PackageReference Include="Conari" Version="1.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Conari --version 1.3.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Together with the DllExport project, we have a few useful examples for you:

1:[ C++ ❤ C# 💕C++. Part-1 ]
2:[ Complex types and Strings. Part-2 ]
->{ 🗎 Wiki }

Together with the DllExport project, we have a few useful examples for you:

1:[ C++ ❤ C# 💕C++. Part-1 ]
2:[ Complex types and Strings. Part-2 ]
->{ 🗎 Wiki }

Release Notes

public release of the Conari engine - v1.3:

   NEW: Improved speed >80% (DLR) & >90% (Lambda) - Issue #10
        `*` results for regXwild x64 (Unicode) via snet tester -

   NEW: Improved DLR. Automatic detection for ByRef types & null-values for any reference-types that pushed with out/ref modifier.
        * +UseCallingContext - To use information about types from CallingContext if it's possible.
        * +UseByRef - To use ByRef& (reference-types) for all sent types.

   NEW: Added `NullType<T>` as optional way for work with reference-types. And for other purpose to store additional information about basic type for any null values.
   NEW: Added IProvider.NewProcAddress event - When handling new non-zero ProcAddress.
   NEW: Started support of Exported-Variables via IExVar & DLR - Issue #7
           l.ExVar.DLR.ADDR_SPEC; // 0x00001CE8
           l.ExVar.get<UInt32>("ADDR_SPEC"); // 0x00001CE8
           l.ExVar.getField(typeof(UInt32).NativeSize(), "ADDR_SPEC"); // Native.Core.Field via raw size
           l.Svc.native("lpProcName"); // Raw access via NativeData & Native.Core !

   NEW: Implemented aliases for Exported-Functions and Variables - Issue #9
           l.Aliases["Flag"] = l.Aliases["getFlag"] = l.Aliases["xFunc"]; //Flag() -> getFlag() -> xFunc()->...
           l.Aliases["gmn"] = new ProcAlias(
               new AliasCfg() { NoPrefixR = true } // false by default

   NEW: Native.Core improvements - Extensions & new `t` signatures for node (raw alignments via size and managed types)
        +`t(Type type, string name = null)`
        +`t(Type[] types, params string[] names)`
        +`t(int size, string name = null)`

   NEW: Aliases for 'empty' types:
        +`Action bindFunc(string lpProcName);`
        +`Action bind(string func);`

   NEW: New group of binding via regular arguments:
        +`Method bindFunc(string lpProcName, Type ret, params Type[] args);`
        +`Method<T, object> bindFunc<T>(string lpProcName, Type ret, params Type[] args);`
        +`Method bind(string func, Type ret, params Type[] args);`
        +`Method<T, object> bind<T>(string func, Type ret, params Type[] args);`

   FIXED: Fixed possible crashes - 'A heap has been corrupted' when use of shared pointer between several UnmanagedStructure.
   CHANGED: ILoader: minor incompatible changes for PE32/PE32+ features.
            * New `IPE PE` property for complex work with PE-file.
            * The `ExportFunctionNames` property has been removed as obsolete. Use same `PE.ExportedProcNamesArray`

   CHANGED: IProvider minor incompatible changes `funcName()` -> `procName()`
            `string funcName(string name);` has been renamed to `string procName(string name);`
             - as a common method for getting full lpProcName with main prefix etc.

   CHANGED: `TDyn IBinder.bind(MethodInfo mi, bool prefix = false);` removed as a deprecated, because for this can be a lot of misunderstandings.
             If you need something, use like: `prefix ? l.procName(mi.Name) : mi.Name` etc. for any available methods with MethodInfo.

   CHANGED: Added User object (+`user`) for Native.Core.Field. To store any additional information that's related for specific field.


This package has no dependencies.

Version History

Version Downloads Last updated
1.3.0 1,337 1/27/2017
1.2.0 792 9/24/2016
1.1.0 669 8/17/2016