Альтернативный подход к вашему обычному P/Invoke!
Используйте интерфейсы C# для привязки к собственному коду — быстрое и простое использование C API в коде C# на любой платформе. Прошли времена неработающего DllImport
и надоедливых обходных путей для разных сред выполнения.
Полностью совместим с Mono, .NET Framework, .NET Core и .NET Standard. Совместимость с сопоставлением Mono DLL на всех платформах и средах выполнения. Настраиваемый и адаптируемый.
extern
. Используйте свой собственный API, как если бы это были первоклассные объекты.Прочтите документацию или установите через NuGet и приступайте к работе.
Nullable<T>
и string
, без дополнительного кода.Объявите свой интерфейс
public interface IMyNativeLibrary
{
long MyNativeGlobal { get ; set ; }
int MyNativeMultiply ( int a , int b ) ;
void MyOtherNativeFunction ( MyStruct strct , ref MyStruct ? maybeStruct ) ;
}
Активируйте его
const string MyLibraryName = "MyLibrary" ;
var activator = new NativeLibraryBuilder ( ) ;
var library = activator . ActivateInterface < IMyNativeLibrary > ( MyLibraryName ) ;
Используйте это
library . MyNativeGlobal = 10 ;
var result = library . MyNativeMultiply ( 5 , 5 ) ;
var myStruct = new MyStruct ( ) ;
MyStruct ? myOtherStruct = null ;
library . MyOtherNativeFunction ( myStruct , ref myOtherStruct ) ;
Дополнительную информацию см. в кратком руководстве.
Получите это на NuGet!
Если лицензия библиотеки не подходит вашему проекту или продукту, свяжитесь с нами. Доступны индивидуальные варианты лицензирования, и мы всегда готовы разработать что-то, что подойдет вам — будь то модифицированное, коммерческое или иное.
Публичная версия AdvancedDLSupport лицензируется по лицензии GNU Lesser General Public License, версия 3 (LGPLv3). Подробности смотрите в ЛИЦЕНЗИИ. Без поддержки движения открытого исходного кода его бы никогда не существовало.