请指导我如何创建一个C#包装器来访问C ++中的tesseract库的方法。
答案 0 :(得分:5)
Here是关于您可以遵循的CodeProject的好文章。
在选择重用非托管库的方法时,通常情况下 有三个选择:
- IJW 或它只是起作用。这是.NET最大的功能之一 框架已经提供给开发人员。你只需重新编译旧的 新.NET平台上的代码。不需要或只需要很少的改变。 不要忘了;它仅适用于C ++语言。
- 的 COM 即可。 COM模型适用于非托管和托管 环境。在.NET上执行COM调用很简单。 但是,如果你的非托管类没有COM就绪,你可能不会 重写所有旧代码以支持COM。
- P / Invoke 或平台调用。此机制允许您导入 class作为属性级别的函数。基本上,你导入 类方法一个接一个地作为单独的函数,就像你一样 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();
}
}
还有一篇与此相关的旧帖子,您可以check it here。