从 C# DLL 导出的函数不起作用

Exported functions from C# DLL not working

我必须从 C# 中的 DLL 中导出 3 个基本方法,以便在 C++ 中可以访问它:

所以我找到了 Unmanaged Exports 一个很好的 C# 库,它使这更容易。

所以我继续使用示例代码进行测试:

using System;
using System.IO;
using RGiesecke.DllExport;

namespace Plugins
{
    public class Plugins
    {
        [DllExport("OnPluginStart", CallingConvention = CallingConvention.StdCall)]
        public static void OnPluginStart()
        {
            using (var file = new StreamWriter(@"pluginLog.txt", true))
            {
                file.WriteLine("OnPluginStart");
            }
        }

        [DllExport("OnPluginStop", CallingConvention = CallingConvention.StdCall)]
        public static void OnPluginStop()
        {
            using (var file = new StreamWriter(@"pluginLog.txt", true))
            {
                file.WriteLine("OnPluginStop");
            }
        }

        [DllExport("PluginUpdate", CallingConvention = CallingConvention.StdCall)]
        public static void PluginUpdate(float dt)
        {
            using (var file = new StreamWriter(@"pluginLog.txt", true))
            {
                file.WriteLine("PluginUpdate");
            }
        }
    }
}

但是,当我编译我的 DLL 并使用 DLL Exporter Viewer 时,它没有列出任何导出的函数,并且 DLL 加载到的应用程序也从不运行我的插件。

我在这里做错了什么导致我的函数根本没有被导出?

除了您发布的代码无法编译之外,您的代码工作正常。您省略了 using System.Runtime.InteropServices 行。您的(固定)代码的 x86 class 库构建的 Dependency Walker 是这样说的:

问题最明显的原因可能是 NuGet page for the library 中的以下原因:

You have to set your platform target to either x86, ia64 or x64. AnyCPU assemblies cannot export functions.