C#Dll - 导出功能

时间:2016-07-25 21:22:00

标签: c# .net visual-studio dll dllexport

我正在尝试使用一些可导出的函数创建一个c#dll。然后我想要一个C ++ /非托管程序来加载.dll并在dll中调用一个特定的导出函数。

我正在使用Robert Giesecke's Unmanaged Exports。但它似乎不起作用。

我在调试器中运行了非托管程序,它成功执行 &#34; LoadLibrary()&#34; ,但是当它尝试 <时em>&#34; GetProcAddress(test_start)&#34; 呼叫失败并返回零。

这是我的c#代码:

    using System.Runtime.InteropServices;
    using RGiesecke.DllExport;
    using etc...; 

    namespace test_dll
    {

        public class Class1
         {  

              [DllImport("kernel32.dll")]
              public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);

              [DllExport("test_start", CallingConvention = CallingConvention.Cdecl)]
              public static void test_start()
              {
                    MessageBox.Show("It works","YES");
              }

         }
    }

.dll构建正常并且CPU匹配(x86),但是一旦加载了c#dll,非托管程序就无法获取导出函数地址。

现在它很基本,但我只是想让它发挥作用。我以后需要进口。

任何帮助,nuget包的文档都很薄。感谢

1 个答案:

答案 0 :(得分:1)

嘿所以实际上我做得非常好。

很奇怪Robert Giesecke的Unmanaged Exports忽略了第一次出口?

因此,我在下面创建的任何出口都有效并得到认可。

我检查了CFF资源管理器以查看有效的导出,除第一个之外的所有导出都在那里。所以我只留下了一个空白的出口。