【问题标题】:DllImport and EntryPointNotFoundException [closed]DllImport 和 EntryPointNotFoundException [关闭]
【发布时间】:2014-05-13 14:47:14
【问题描述】:

在我的应用程序中,我必须动态加载 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();
    }
}

【问题讨论】:

  • 请提供代码。但是你的入口点肯定是错误的,所以“windows dll-entry-standard”根本找不到它。
  • 我已经添加了代码。
  • 在该 DLL 上运行 dumpbin.exe /exports,以便您知道入口点函数名称是什么。您可能只会看到 4 个函数,例如 DllGetClassObject()。这意味着您应该添加对 DLL 的引用,以便可以直接使用 COM 组件。
  • 在我的 DLL 上运行 dumpbin.exe /exports 后,只列出了 5 个函数。我看不到我需要的功能。我必须动态加载dll,所以有什么方法可以动态访问所需的函数。
  • @HansPassant 如果在 DLL 上运行 dumpbin.exe /exports 后未列出某个函数,有没有办法在不引用该 dll 的情况下访问该函数。

标签: c# .net dll pinvoke dllimport


【解决方案1】:

这个错误只有一个解释。也就是说,有问题的 DLL 不会导出名为 Connect_Net 的函数。造成这种情况的一些可能原因是:

  • DLL 根本没有导出该函数。
  • 您输入了错误的函数名称。请注意,导出的函数名称区分大小写。
  • 函数已导出,但名称已修饰或损坏。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 你的例外是什么?
    • 我遇到了同样的异常。
    • 你提到的dll文件在哪里?你有什么 ?您是否编写了 dll 或是谁编写的? sanmple.dll 和 zkemkeeper.dll 不一样,有些东西混在一起。
    • @icbytes 你能解释一下你的答案是什么意思吗?你的 p/invoke 是通过什么方式解决问题的?
    • 我的回答是,这通常对我有用,因此我希望它也能帮助操作。
    猜你喜欢
    • 2021-09-23
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多