0

C++ の tesseract ライブラリのメソッドにアクセスする C# ラッパーを作成する方法を教えてください。

4

1 に答える 1

5

これは、フォローできるCodeProjectに関する優れた記事です

管理されていないライブラリを再利用する方法を選択する場合、通常、次の 3 つのオプションがあります。

  1. IJWまたはIt Just Works。これは、.NET Framework が開発者に提供した最大の機能の 1 つです。古いコードを新しい .NET プラットフォームで再コンパイルするだけです。変更はほとんど必要ありません。ただし、忘れないでください。C++ 言語でのみ機能します。
  2. コム。COM モデルは、管理されていない環境と管理されている環境の両方で機能します。.NET で COM Invoke を実行するのは簡単です。ただし、アンマネージ クラスが COM に対応していない場合、古いコードをすべて書き直して COM をサポートすることはおそらくないでしょう。
  3. P/Invokeまたは Platform Invoke。このメカニズムにより、属性レベルでクラスを関数としてインポートできます。基本的に、Win32 API の場合と同様に、クラス メソッドを個別の関数として 1 つずつインポートします。

あなたの場合、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 に答える