“无法在dll中找到名为[function]的入口点(c到c#类型转换)

前端之家收集整理的这篇文章主要介绍了“无法在dll中找到名为[function]的入口点(c到c#类型转换)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@ 我有一个来自第三方的dll,它是用C写的。
以下是来自dll文档的一些信息:
  1. //start documentation
  2.  
  3. RECO_DATA{
  4. wchar_t Surname[200];
  5. wchar_t Firstname[200];
  6. }

描述:
用于接收功能结果的数据结构。所有的功能结果将是
存储为Unicode(UTF-8)。

方法

  1. bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);

输入:

  1. char * imgPath

图像位置的完整路径为此
功能识别

  1. RECO_DATA * o_data

用于接收功能的数据对象
结果。
功能返回:
如果成功则为True,否则返回false。

  1. //end documentation

我正在尝试从C#应用程序调用recoCHN_P_Name。为此,我想出了这段代码

导入dll的代码

  1. public class cnOCRsdk
  2. {
  3. [StructLayout(LayoutKind.Sequential,CharSet = CharSet.Unicode)]
  4. public struct RECO_DATA{
  5. [MarshalAs(UnmanagedType.ByValTStr,SizeConst=200)]
  6. public string FirstName;
  7. [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 200)]
  8. public string Surname;
  9. }
  10.  
  11. [DllImport(@"cnOCRsdk.dll",EntryPoint="recoCHN_P_Name")]
  12. public static extern bool recoCHN_P_Name(byte[] imgPath,RECO_DATA o_data);
  13. }

调用函数代码

  1. cnOCRsdk.RECO_DATA recoData = new cnOCRsdk.RECO_DATA();
  2.  
  3. string path = @"C:\WINDOWS\twain_32\twainrgb.bmp";
  4.  
  5. System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
  6. byte[] bytes = encoding.GetBytes(path);
  7.  
  8. bool res = cnOCRsdk.recoCHN_P_Name(bytes,recoData);

我得到的错误
“”无法在DLL’cnOCRsdk.dll’中找到名为’recoCHN_P_Name’的入口点。
我怀疑我将类型从C转换为C#时出错。但在哪里呢?

首先确保功能实际导出:

在Visual Studio命令提示符下,使用dumpbin / exports whatever.dll

猜你在找的Windows相关文章