如何从C ++ tesseract库创建一个C#包装类?

时间:2012-05-03 04:53:56

标签: c# c++ wrapper dllimport tesseract

请指导我如何创建一个C#包装器来访问C ++中的tesseract库的方法。

1 个答案:

答案 0 :(得分:5)

Here是关于您可以遵循的CodeProject的好文章。

  

在选择重用非托管库的方法时,通常情况下   有三个选择:

     
      
  1. IJW 或它只是起作用。这是.NET最大的功能之一   框架已经提供给开发人员。你只需重新编译旧的   新.NET平台上的代码。不需要或只需要很少的改变。   不要忘了;它仅适用于C ++语言。
  2.   
  3. COM 即可。 COM模型适用于非托管和托管   环境。在.NET上执行COM调用很简单。   但是,如果你的非托管类没有COM就绪,你可能不会   重写所有旧代码以支持COM。
  4.   
  5. P / Invoke 或平台调用。此机制允许您导入   class作为属性级别的函数。基本上,你导入   类方法一个接一个地作为单独的函数,就像你一样   Win32 API。
  6.   

对于您的情况,我会建议PlaPlatform Invocation Services (PInvoke)。它allows managed code to call unmanaged functions that are implemented in a DLL。例如,看看这个MSDN代码

// PInvokeTest.cs
using System;
using System.Runtime.InteropServices;

class PlatformInvokeTest
{
    [DllImport("msvcrt.dll")]
    public static extern int puts(string c);
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();

    public static void Main() 
    {
        puts("Test");
        _flushall();
    }
}

还有一篇与此相关的旧帖子,您可以check it here