我有一个来自第三方的dll,它是用C写的。
以下是来自dll文档的一些信息:
原文链接:https://www.f2er.com/windows/372343.html以下是来自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,否则返回false。
//end documentation
我正在尝试从C#应用程序调用recoCHN_P_Name。为此,我想出了这段代码:
导入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);
我得到的错误是
“”无法在DLL’cnOCRsdk.dll’中找到名为’recoCHN_P_Name’的入口点。
我怀疑我将类型从C转换为C#时出错。但在哪里呢?