DllImport and EntryPointNotFoundException
本文关键字:EntryPointNotFoundException and DllImport | 更新日期: 2023-09-27 18:03:02
在我的应用程序中,我必须动态加载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();
}
}
这个错误只有一个解释。也就是说,所讨论的DLL不导出名为Connect_Net
的函数。一些可能的原因是:
- DLL不导出函数 您输入了错误的函数名。注意导出的函数名是区分大小写的。
- 函数被导出,但有一个修饰或修改的名称。
使用dumpbin.exe /exports
列出DLL导出的函数
尝试这样做(如果您有正确的dll规范定义)。
[System.Runtime.InteropServices.DllImport(@"Your.dll", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
private static extern int GetWhatever(string vone, string vtwo, string vthree);