2

我决定为我的 Windows Mobile 6 项目使用tessnet2库。不幸的是,当我试图编译它时,它会抛出一个错误:

  1. 'tessnet2.Tesseract.GetThresholdedImage(System.Drawing.Bitmap, System.Drawing.Rectangle)' 的最佳重载方法匹配有一些无效参数

  2. 'System.Drawing.Rectangle' 类型是在未引用的程序集中定义的。您必须添加对程序集 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 的引用

好的,我知道。添加对程序集的引用。问题是,我做到了。我在解决方案资源管理器(System.Drawing)中通过“添加引用”添加引用,我什至将它声明为“使用 System.Drawing”。

Intellisense 可以正常工作。当我写“矩形”时,它会自动向我显示顶部带有“矩形”结构的列表。

问题是什么?程序集加了,连intellisense都看到了,为什么编译器看不到?

4

2 回答 2

3

看看它,这在 Compact Framework 中是不可能的。首先网站明确表示

Tessnet2.dll 需要 Visual C++ 2008 Runtime

嗯,这意味着它是为桌面构建的。由于许多原因,它无法在 WinMo 设备上运行,但只要说您必须为正确的处理器和使用正确的运行时重新编译它就足够了。如果它使用内联汇编器之类的任何东西,这将使其移植变得非常非常具有挑战性。

如果您构建了 tessract 库,您仍然无法使用 tessnet2 托管库。

这是一个 Visual Studio 2008 C++/CLI 项目

这意味着它是一个托管的 C++ 项目。COmpact 框架不支持托管 C++。因此,您必须将其移植到 C# 或编写一个单独的 P/Invoke 包装器来调用 tessract 库函数。

于 2010-01-29T18:38:00.033 回答
1

紧凑框架和标准框架是两个不同的代码库,它们公开了类似的 API。这就是智能感知“有效”但编译器“抱怨”的原因。

您的第 3 方 OCR 框架需要引用 CompactFramework。下载 Tessnet2 的源代码。将引用的框架程序集替换为紧凑的框架程序集。您必须浏览它们并在“C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE”中找到它们。

于 2010-01-29T15:15:30.067 回答