相关疑难解决方法(0)

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

我有一个来自第三方的dll,它是用C++编写的.以下是来自dll文档的一些信息:

//start documentation

RECO_DATA{
wchar_t Surname[200];
wchar_t Firstname[200];
}
Run Code Online (Sandbox Code Playgroud)

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

方法:

bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);
Run Code Online (Sandbox Code Playgroud)

输入:

char * imgPath
Run Code Online (Sandbox Code Playgroud)

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

RECO_DATA * o_data
Run Code Online (Sandbox Code Playgroud)

用于接收功能结果的数据对象.函数返回:如果成功则返回true,否则返回false.

//end documentation
Run Code Online (Sandbox Code Playgroud)

我试图从我的C#应用​​程序调用recoCHN_P_Name.为此,我想出了这段代码:

导入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);
}
Run Code Online (Sandbox Code Playgroud)

调用函数的代码:

            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 …
Run Code Online (Sandbox Code Playgroud)

c# c++ dll dllimport extern

21
推荐指数
4
解决办法
6万
查看次数

标签 统计

c# ×1

c++ ×1

dll ×1

dllimport ×1

extern ×1