Mam dll, które pochodzi od strony trzeciej, która została napisana w C++. Oto kilka informacji, które pochodzi z dokumentacji biblioteki dll:"Nie można znaleźć punktu wejścia o nazwie [funkcja] w dll" (konwersja C++ do C#)
//start documentation
RECO_DATA{
wchar_t Surname[200];
wchar_t Firstname[200];
}
Opis: struktury danych do odbioru wynik funkcji. Wszystkie wyniki funkcji będą przechowywane jako Unicode (UTF-8).
Metoda:
bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);
Wejście:
char * imgPath
pełną ścieżkę położenia obrazu w tym funkcji rozpoznawania
RECO_DATA * o_data
obiektu danych do odbioru wynik funkcja . Zwrot funkcji: Prawda, jeśli sukces, w przeciwnym razie false powróci.
//end documentation
Próbuję wywołać recoCHN_P_Name z mojej aplikacji C#. W tym celu, wymyśliłem ten kod:
Kod importować 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);
}
kod, aby wywołać funkcję:
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);
a błąd Dostaję to jest "" Nie można znaleźć punktu wejścia o nazwie "recoCHN_P_Name" w pliku DLL "cnOCRsdk.dll". " Podejrzewam, że wystąpił błąd podczas konwersji typu z C++ na C#. Ale gdzie dokładnie ... ?
mam linię na wyjściu, który mówi „14 D 00007B40 recoCHN_P_Name @ CcnOCRsdk @@ QAE_NPADPAURECO_DATA @@@ Z " co mi to mówi? – Evgeny
Zobacz http://www.kegel.com/mangle.html w celu uzyskania szczegółowego wyjaśnienia, jak go odszyfrować. Upewnij się, że masz poprawne typy danych. –
To zdecydowanie wskazało mi właściwy kierunek, dzięki – Evgeny