Как в C# проекте импортировать стороннюю c++ библиотеку?
Я использую Visual Studio 2019. Создал новое консольное приложение. И мне надо импортировать и использовать в дальнейшем эту библиотеку https://github.com/pkohut/GeoFormulas. Но в интернете я особо не нашел конкретные шаги как это достичь. Если кто то имеет опыт или знает как найти нужные ресурсы то помогите пожалуйста.
Вариант "идеоматичный":
1. Эта библиотека должна экспортировать функции с сишным abi (extern "C")
2. В коде на C# ты описываешь эти функции при помощи pinvoke
3. Добавляешь в проект dll-ку с собранной сторонней либой.
Профит
Вариант "ситуативный и будет работать только на винде":
1. Берёшь C++/CLI
2. Делаешь на нём .Net библиотеку и делаешь нужное количество классов -обёрток над плюсовым кодом.
Профит
В случае с этой библиотекой можно ещё попробовать:
1. Найти альтернативы
2. Переписать на C#
Для винды вариант с C++/CLI самый оптимальный, если есть опыт работы с ним.
Есть ещё два варианта:
1) обернуть библиотеку в COM;
2) обернуть библиотеку в отдельный процесс и общаться с ней по ZeroMQ, например; дополнительно полезно, если её код не самый безопасный и она любит падать.
Никак, вот так просто не добавишь.
Пишешь ручками обёртку по вызову каждой нужной тебе функций из нативного кода. Либо воспользоваться тулзами которые могу создать некую рыбу для дальнейшего допиливания напильником, вроде CppSharp
Две копейки к ответам: если расположение библиотеки будет динамическое (т.е., не вшиваешь её в проект), то перед обращением к билиотеке её можно подгрузить через NativeLibrary.Load()