Ich habe eine DLL, die von einer dritten Partei stammt, die in C++ geschrieben wurde. Hier einige Informationen, die von der DLL-Dokumentation kommt:"Kann einen Einstiegspunkt namens [Funktion] in dll" (C++ zu C# Typ Konvertierung) nicht finden
//start documentation
RECO_DATA{
wchar_t Surname[200];
wchar_t Firstname[200];
}
Beschreibung: Datenstruktur die Funktion Ergebnis für die Aufnahme. Alle Funktionsergebnisse werden als Unicode (UTF-8) gespeichert.
Methode:
bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);
Input:
char * imgPath
der vollständige Pfad des Bildpunktes für diese Funktion
RECO_DATA * o_data
Datenobjekt zu erkennen, für die Funktion Ergebnis Empfang . Funktion return: True wenn Erfolg, sonst false wird zurückgegeben.
//end documentation
Ich versuche, den recoCHN_P_Name aus meiner C# -Anwendung aufzurufen. Zu diesem Zweck kam ich mit diesem Code auf:
Der Code der DLL zu importieren:
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);
}
Der Code zum Aufruf der Funktion:
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);
und der Fehler Ich erhalte ist "" Kann einen Einstiegspunkt mit dem Namen 'recoCHN_P_Name' in der DLL 'cnOCRsdk.dll' nicht finden. " Ich vermute, dass ich einen Fehler beim Konvertieren eines Typs von C++ nach C# habe. Aber wo genau ...
Ich habe eine Zeile in der Ausgabe, die sagt „14 D 00007B40 recoCHN_P_Name @ CcnOCRsdk @@ QAE_NPADPAURECO_DATA @@@ Z " was sagt mir das? – Evgeny
Eine detaillierte Erklärung zur Entschlüsselung finden Sie unter http://www.kegel.com/mangle.html. Stellen Sie sicher, dass die Datentypen korrekt sind. –
Das hat mich definitiv in die richtige Richtung gelenkt, danke – Evgeny