以下是来自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#时出错。但在哪里呢?