请指导我如何创建 C# 包装器以访问 C++ 中的 tesseract 库的方法。
问问题
1713 次
1 回答
5
这是一篇关于 CodeProject 的好文章,您可以关注。
在选择重用非托管库的方法时,通常有三个选项:
- IJW或它只是工作。这是 .NET Framework 为开发人员提供的最大功能之一。您只需在新的 .NET 平台上重新编译旧代码。不需要或只需要很少的改变。不过不要忘记;它仅适用于 C++ 语言。
- 通讯。COM 模型适用于非托管和托管环境。在 .NET 上执行 COM 调用很简单。但是,如果您的非托管类不是 COM 就绪的,您可能不会重写所有旧代码来支持 COM。
- 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 回答