DllImport和EntryPointNotFoundException

时间:2014-05-13 14:47:15

标签: c# .net dll pinvoke dllimport

在我的应用程序中,我必须动态地使用dll。我已使用DllImport属性动态加载了一个dll。但是我得到了以下例外。

System.EntryPointNotFoundException

其他信息:无法在DLL zkemkeeper.dll'中找到名为“Connect_Net”的入口点。

此异常的可能原因是什么?我该怎么办呢请帮帮我。

这是我的代码:

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    [DllImport("C:\\Windows\\SysWOW64\\zkemkeeper.dll", EntryPoint = "Connect_Net")]
    public static extern bool Connect_Net(string IPAdd, int Port);

    [DllImport("C:\\Windows\\SysWOW64\\zkemkeeper.dll", EntryPoint = "Disconnect")]
    public static extern void Disconnect();




    private void button1_Click(object sender, EventArgs e)
    {            
        var res = Connect_Net("192.168.1.201", Convert.ToInt32(4370));

        Disconnect();
    }
}

2 个答案:

答案 0 :(得分:2)

此错误只有一个解释。即,有问题的DLL不会导出名为Connect_Net的函数。一些可能的原因是:

  • 该函数不会被DLL导出。
  • 您错误输入了函数名称。请注意,导出的函数名称区分大小写。
  • 该功能已导出,但名称已修饰或损坏。

使用dumpbin.exe /exports列出DLL导出的函数。

答案 1 :(得分:0)

尝试这样做(如果你有正确的dll规范定义)。

 [System.Runtime.InteropServices.DllImport(@"Your.dll", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
    private static extern int GetWhatever(string vone, string vtwo, string vthree);