【发布时间】:2023-03-21 13:55:02
【问题描述】:
我有一个来自第三方的 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,否则返回 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# 时出错。但具体在哪里……?
【问题讨论】:
标签: c# c++ dll dllimport extern