找不到名为的入口点

Unable to find an entry point named

本文关键字:入口 找不到      更新时间:2023-10-16

我正在用c#编写一个应用程序,该应用程序使用用cpp编写的第三方dll。我对dll进行了几次调用,除一次调用外,其他调用都在工作。

我的代码以以下方式进行调用:

return ObjectGetStringEntryID(pObject, strEntryID, strEntryID.Capacity);
[DllImport(EXTERNAL_DLL, CharSet = DefaultCharSet)]
protected static extern bool ObjectGetStringEntryID(IntPtr pObject, StringBuilder strEntryID, int nMaxLength);

由于我可以访问源代码,我知道它包含以下定义:

BOOL ObjectGetStringEntryID(CMAPIObject* pObject, LPTSTR szEntryID, int nMaxLength)

如前所述,我使用相同的格式对这个dll进行了其他几次调用,它们都是成功的。

因此,如果有帮助的话,我有以下设置:

public const CharSet DefaultCharSet = CharSet.Ansi;

有人看到我的电话里可能做错了什么吗?来自同一个班级,我叫:

MessageGetSubject(pObject, strSubject, strSubject.Capacity);
[DllImport(EXTERNAL_DLL, CharSet = DefaultCharSet)]
protected static extern void MessageGetSubject(IntPtr pMessage, StringBuilder strSubject, int nMaxLength);

与方法匹配的:

void MessageGetSubject(CMAPIMessage* pMessage, LPTSTR szSubject, int nMaxLength)

这与不起作用的调用来自c#和cpp中的相同类,但它运行得很好。它的命名方式似乎没有任何区别,所以它们要么有效,要么无效。

如果有人知道我做错了什么,我将非常感谢你的帮助。

EntryPointNotFoundException表示DLL不导出符号ObjectGetStringEntryID。检查导出文件(或__declspec声明)以确保它已导出,并按该名称导出。

这可能有帮助:从DLL 导出