I have a dll which comes from a third party, which was written in C++. Here is some information that comes from the dll documentation:
//start documentation RECO_DATA{ wchar_t Surname[200]; wchar_t Firstname[200]; }
Description: Data structure for receiving the function result. All function result will be stored as Unicode (UTF-8).
Method:
bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);
Input:
char * imgPath
the full path of the image location for this function to recognize
RECO_DATA * o_data
data object for receiving the function result. Function return: True if Success, otherwise false will return.
//end documentation
I am trying to call the recoCHN_P_Name from my C# application. To this end, I came up with this code:
The code to import the 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); }
The code to call the function:
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);
And the error I’m getting is ”Unable to find an entry point named ‘recoCHN_P_Name’ in DLL ‘cnOCRsdk.dll’.’ I’m suspecting that I’m having an error in converting a type from C++ to C#. But where exactly … ?
First make sure the function is actually exported:
In the Visual Studio Command Prompt, use
dumpbin /exports whatever.dll