"No se puede encontrar un punto de entrada llamado [función] en dll" (conversión de tipo c ++ a c #)
Tengo un dll que proviene de un tercero, que fue escrito en C ++. Aquí hay información que proviene de la documentación de dll:
//start documentation
RECO_DATA{
wchar_t Surname[200];
wchar_t Firstname[200];
}
Descripción: Estructura de datos para recibir el resultado de la función. Todos los resultados de la función se almacenarán como Unicode (UTF-8).
Método
bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);
Entrada
char * imgPath
la ruta completa de la ubicación de la imagen para que esta función reconozca
RECO_DATA * o_data
bjeto @data para recibir el resultado de la función. Retorno de función: verdadero si es correcto; de lo contrario, falso volver
//end documentation
Estoy intentando llamar a recoCHN_P_Name desde mi aplicación C #. Con este fin, se me ocurrió este código:
El código para importar la 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);
}
El código para llamar a la función:
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);
Y el error que obtengo es "" No se puede encontrar un punto de entrada llamado 'recoCHN_P_Name' en la DLL 'cnOCRsdk.dll'. "Sospecho que estoy teniendo un error al convertir un tipo de C ++ a C #. ¿Pero dónde exactamente ...?