是否可以像在 VS C 中那样从 C# DLL 导出函数?

新手上路,请多包涵

在 VS C/C++ 中,您可以使用 extern "C" __declspec(dllexport) -function declaration-

如何在 C# dll 中完成此操作?是否有与上述代码等效的 C# 代码?

编辑:更多信息

我正在尝试为 Notepad++ 创建一个插件并且我想使用 C#,但到目前为止我看到的常见方法是使用带有上述调用的旧版 C++ 代码来导出 Notepad++ 期望导入的一些函数和称呼。有一个使用 C# 的示例应用程序,但这仍然需要一个加载器 DLL,我从下面的评论/答案中假设它是 C# 的唯一方法。

原文由 Mike Webb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 645
2 个回答

非托管出口 => https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports

DLLExport => https://github.com/3F/DllExport

它是如何工作的?

创建一个新的类库或继续现有的类库。然后添加 UnmanagedExports Nuget 包

这几乎是所需的所有设置。

现在您可以编写任何类型的静态方法,用 [DllExport] 装饰它并在本机代码中使用它。

它的工作原理与 DllImport 类似,因此您可以使用 MarshalAsAttribute 自定义参数/结果的编组。

在编译期间,我的任务将修改 IL 以添加所需的导出…

原文由 hB0 发布,翻译遵循 CC BY-SA 4.0 许可协议

我以前见过有人这样做,但它需要 ildasm,添加 MSIL .export 指令,然后重新组装。 名为 dll_tool 的程序 可以为您完成这些步骤。

如果您想构建具有本机和托管导出的混合模式 DLL,您应该使用专门为此目的设计的 C++/CLI。

原文由 Ben Voigt 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题