У меня есть 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, если Success, в противном случае вернется false.
//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'."
Я подозреваю, что у меня возникла ошибка при преобразовании типа из C ++ в C #. Но где именно ...?