2010-01-29 60 views
2

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

  1. The best overloaded method match for 'tessnet2.Tesseract.GetThresholdedImage(System.Drawing.Bitmap, System.Drawing.Rectangle)' has some invalid arguments

  2. The type 'System.Drawing.Rectangle' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

好的,我知道。添加对组件的引用。问题是,我做到了。我通过解决方案资源管理器(System.Drawing)中的'添加引用'添加引用,我甚至将它声明为'using System.Drawing'。

智能感知工作没有任何问题。当我写'rect'时,它会自动向我显示顶部带有'Rectangle'结构的列表。

什么问题?该组件被添加,甚至intellisense看到它,为什么不编译器?

+0

你有没有设法编译它或制作一个C++ lib吗? – Patryk 2012-01-08 23:52:28

回答

1

紧凑框架和标准框架是两个不同的代码库,它们公开了一个类似的API。这就是为什么intellisense'工作'但编译器'抱怨'。

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

+0

解决方案资源管理器中的所有引用都来自C:\ Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ WindowsCE“,仍然出现错误 – patric789 2010-01-29 15:40:19

+0

我在回答之前没有看过该网站,就像ctacke说它是托管C++的,所以你必须捏造它,但是我看到作者还说非托管代码泄露了内存,这听起来不像是一个美孚应用程序的好代码。 – jyoung 2010-01-31 13:39:03

3

只是看着它,这是没有办法在精简版框架中工作。首先明确指出网站

Tessnet2.dll needs Visual C++ 2008 Runtime

那么,这意味着它是为桌面而构建的。由于许多原因,它不适用于WinMo设备,但可以说,您必须重新编译它以获得正确的处理器并使用正确的运行时。如果它使用内嵌汇编程序这样的任何东西,这将会使它移植真的非常具有挑战性。

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

It's a Visual Studio 2008 C++/CLI project

这意味着这是一个托管的C++项目。受影响的C++不受COmpact Framework支持。所以你必须把它移植到C#或者编写一个调用tessract库函数的单独的P/Invoke包装器。

相关问题