0

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

4

1 回答 1

5

是一篇关于 CodeProject 的好文章,您可以关注。

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

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

对于您的情况,我会建议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();
    }
}

还有一篇较早的帖子与此相关,您可以在此处查看

于 2012-05-03T05:19:51.700 回答