我有一个来自第三方的DLL,该dll是用C ++编写的。这是来自DLL文档的一些信息:

//start documentation

RECO_DATA{
wchar_t Surname[200];
wchar_t Firstname[200];
}

描述:接收功能结果的数据结构。所有功能结果将存储为Unicode(UTF-8)。

方法:

bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);

输入:

char * imgPath

图像位置的完整路径以识别此功能

RECO_DATA * o_data

用于接收功能结果的数据对象。函数返回:如果成功,则为true,否则错误将返回。

//end documentation

我试图调用recoCHN_P_Name C

导入DLL的代码:

    public class cnOCRsdk
{
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    public struct RECO_DATA{
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst=200)]
        public string FirstName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string Surname;
        }

    [DllImport(@"cnOCRsdk.dll", EntryPoint="recoCHN_P_Name")]
    public static extern bool recoCHN_P_Name(byte[] imgPath, RECO_DATA o_data);
}

调用函数的代码:

            cnOCRsdk.RECO_DATA recoData = new cnOCRsdk.RECO_DATA();

        string path = @"C:\WINDOWS\twain_32\twainrgb.bmp";

        System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
        byte[] bytes = encoding.GetBytes(path);

        bool res = cnOCRsdk.recoCHN_P_Name(bytes, recoData);

错误我是"无法找到一个名为"recoCHN_P_Name"DLL的入口点’cnOCRsdk.dll’。"

答案

首先确保该功能实际上导出:

在Visual Studio命令提示中,使用dumpbin /exports whatever.dll

来自: stackoverflow.com