我决定将tessnet2库用于我的Windows Mobile 6项目。不幸的是,当我尝试编译它时,它会抛出一个错误:
'tessnet2.Tesseract.GetThresholdedImage(System.Drawing.Bitmap,System.Drawing.Rectangle)'的最佳重载方法匹配有一些无效的参数
- 的引用 醇>
类型'System.Drawing.Rectangle'在未引用的程序集中定义。您必须添加对程序集'System.Drawing,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
好的,我知道。添加对程序集的引用。问题是,我做到了。我在解决方案资源管理器(System.Drawing)中添加了“添加引用”的引用,我甚至将它声明为“使用System.Drawing”。
Intellisense没有任何问题。当我写'rect'时,它会自动向我显示顶部带有'Rectangle'结构的列表。
有什么问题?添加了程序集,即使是intellisense看到它,为什么不编译器?
答案 0 :(得分:3)
只是看一下,这在Compact Framework中是行不通的。首先,该网站明确表示
Tessnet2.dll需要Visual C ++ 2008 Runtime
嗯,这意味着它是为桌面构建的。由于许多原因,它无法在WinMo设备上运行,但只需说您必须为正确的处理器重新编译它并使用正确的运行时。如果它使用内联汇编程序之类的东西,这将使它真正移植真正具有挑战性。
如果您构建了tessract库,则仍然无法使用tessnet2托管库。
这是一个Visual Studio 2008 C ++ / CLI项目
这意味着它是一个托管的C ++项目。 COmpact Framework不支持托管C ++。因此,您必须将其移植到C#或编写一个单独的P / Invoke包装器来调用tessract库函数。
答案 1 :(得分:1)
紧凑框架和标准框架是两个不同的代码库,它们公开了类似的API。这就是intellisense“工作”但编译器“抱怨”的原因。
您的第三方OCR框架需要引用CompactFramework。下载Tessnet2的源代码。用紧凑框架程序集替换引用的框架程序集。您必须浏览它们并在“C:\ Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ WindowsCE”中找到它们。