Можно ли экспортировать функции из библиотеки DLL C#, как в VS C++?
в VS C / C++ вы можете использовать extern "C" __declspec(dllexport) -function declaration-
.
Как это сделать в C# dll? Существует ли код c#, эквивалентный вышеуказанному коду?
Edit: дополнительная информация
Я пытаюсь создать надстройку для Notepad++, и я хочу использовать C#, но общий способ, который я видел до сих пор, - использовать устаревший код C++ с вышеуказанным вызовом для экспорта нескольких функций, которые Notepad++ ожидает импортировать и вызывать. Существует пример приложения с использованием C#, но это все еще требуется DLL-загрузчик, который, как я предполагаю из комментариев/ответов ниже, является единственным способом для C#.
4 ответов
Неуправляемый Exports
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
как это работает?
создайте новый classlibrary или продолжить с существующим. Затем добавьте UnmanagedExports пакет Nuget.
Это почти вся настройка, которая требуется.
теперь вы можете написать любой статический метод, украсить его с
[DllExport]
и использовать его с машинный код.
Он работает так же, как DllImport, поэтому вы можете настроить сортировку параметров/результата с помощьюMarshalAsAttribute
.во время компиляции моя задача изменит IL, чтобы добавить необходимый экспорт...
Я видел, как люди делали это раньше, но это потребовало ildasm, добавив MSIL .export
директива, а затем повторная сборка. программы может сделать эти шаги для вас.
Если вы хотите создать библиотеку DLL смешанного режима с собственным и управляемым экспортом, вы должны использовать C++/CLI, который специально разработан для этой цели.
да, можно экспортировать функции из библиотеки dll c# почти так же, как это делает C++! Вам нужна небольшая помощь от надстройки неуправляемый экспорт (DllExport для .Net) это облегчает этот процесс или из аналогичного метода, такого как экспорт функций в C# / VB.NET для собственного кода.
см. код для экспорта C# DLL в Metatrader Build 600+ для рабочего примера с использованием шаблона проекта C# Роберта Гизеке для неуправляемого Экспорт для экспорта библиотеки dll C# в устаревшее приложение (Metatrader), которое имеет большое сходство с C++.
кроме того, вы можете найти родной и .NET совместимость интересно, хотя он в основном ориентирован на доступ к родному коду из .NET, а не наоборот.
нет, вы не можете сделать это в том же смысле, как в C и C++.
но вы можете создать COM API для достижения того, что затем вы можете использовать в коде C и c++.
посмотреть эти статьи