无法将Tesseract链接到VC ++中的新项目。我错过了什么神奇的步骤?

时间:2013-10-14 00:51:03

标签: c++ visual-c++ visual-studio-2008 tesseract

这应该很简单,我试图在VC ++ 2008中为Tesseract解决方案添加一个新的控制台应用程序。

一般问题:LNK2019未解析的外部符号。在Tesseract解决方案中遇到新项目有困难。

解决:

知情的同事找到了解决方案。我没有列出'链接器>中的tesseract * .lib输入>额外的依赖性。添加后,链接就可以了。

MESSY DETAILS:

我跟着http://tesseract-ocr.googlecode.com/svn/trunk/vs2008/doc/setup.html#using-the-latest-tesseractocr-sources,一切都编译得很好,库生成了所有其余的。继续这一步,我尝试在https://code.google.com/p/tesseract-ocr/wiki/APIExample之后在解决方案中构建我自己的项目。我用了第一个简单的例子:

#include <baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api->Init(NULL, "eng")) {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

    // Open input image with leptonica library
    Pix *image = pixRead("/usr/src/tesseract-3.02/phototest.tif");
    api->SetImage(image);
    // Get OCR result
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);

    // Destroy used object and release memory
    api->End();
    delete [] outText;
    pixDestroy(&image);

    return 0;
}

所以我发现我需要添加其他目录,当然。所以我从Tesseract项目设置中复制了所有项目设置。现在的问题是我留下了一堆LNK2019错误。 'myTest.obj:错误LNK2019:未解析的外部符号“public:void __thiscall tesseract :: TessBaseAPI :: End(void)”(?End @ TessBaseAPI @ tesseract @@ QAEXXZ)在函数_main'中引用。我添加了与其他没有问题编译的项目相同的链接器设置。

绝望之下,我制作了其他一个项目dawg2wordlist的复制品。每个设置,除了唯一命名之外的所有代码,我的新项目的目录与其他Tesseract项目处于同一级别。如果复制的设置和代码没有链接,怎么可能?我错过了什么魔法?

非常感谢!

编辑,有人要求进行设置。它们直接从解决方案中的其他项目中删除。 它们如下: 控制台应用程序

C / C ++&gt;其他包含目录: .. \ .. \ api; .. \ .. \ ccmain; .. \ .. \ ccutil; .. \ .. \ ccstruct; .. \ .. \ classify; .. \ .. \立方体; .. \ .. \ cutil; .. \ .. \字典; .. \ .. \图像; .. \ .. \ neural_networks \运行; .. \ .. \ textord; .. \ .. \观察者; .. \ .. \ wordrec;; .. \ .. \ .. \包括; .. \ .. \ .. \包括\ leptonica; .. \端口

C / C ++&gt;预处理器定义: WIN32; _DEBUG; _CONSOLE; _WINDOWS; USE_STD_NAMESPACE; $(NOINHERIT)

链接器&gt;一般&gt;其他库目录: .. \ .. \ .. \ lib

链接器&gt;输入&gt;其他依赖项: ws2_32.lib user32.lib zlib $(ZLIB_VERSION)-static-mtdll-debug.lib libpng $(LIBPNG_VERSION)-static-mtdll-debug.lib libjpeg $(LIBJPEG_VERSION)-static-mtdll-debug .lib giflib $(GIFLIB_VERSION)-static-mtdll-debug.lib libtiff $(LIBTIFF_VERSION)-static-mtdll-debug.lib liblept $(LIBLEPT_VERSION)-static-mtdll-debug.lib $(NOINHERIT)

链接器&gt;系统&gt;子系统:控制台(/ SUBSYSTEM:CONSOLE)

资源&gt;一般&gt;预处理器定义: MYVERSION =“$(LIBTESS_VERSION_R)”

它们都是从解决方案中的'tesseract'项目中复制的,以及资源头,.rc文件和主头文件。

0 个答案:

没有答案