【问题标题】:Windows 64bit shared dll Tesseract?Windows 64位共享dll Tesseract?
【发布时间】:2016-11-11 03:58:02
【问题描述】:

我认为这是可能的,但我无法将以下库构建为 64 位,因为它们是作为项目的一部分构建的,但不承担项目的位数(它们是使用 cppan/ 构建的cmake):

C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.leptonica-master.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.gif-5.1.4.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.jpeg-9.2.0.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.openjpeg.openjp2-2.1.2.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.png-1.6.23.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.tiff-4.0.6.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.zlib-1.2.8.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64” 4>C:\Users\Bruce.cppan\storage\lib\amd64-msvc-19.0-32\Debug\pvt.cppan.demo.webp-0.5.1.lib :警告 LNK4272:库机器类型“X86”与目标冲突 机器类型“x64”

构建为 64 位:

  1. 下载并安装 Git、CMake 并将它们放在 PATH 中。
  2. https://cppan.org/client/ 下载最新的 CPPAN (C++ Archive Network https://cppan.org/) 客户端。 CPPAN 是一个源码包分发系统。在 PATH 中添加 CPPAN 客户端。 (需要 VS2015 redist。)
  3. 如果您有发布存档,请将其解压缩到 tesseract 目录。如果您使用的是主分支运行
  4. git clone https://github.com/tesseract-ocr/tesseracttesseract
  5. 运行
  6. cd tesseract
  7. cpan
  8. mkdir build && cd build
  9. cmake .. -DSTATIC=1

在您的 Visual Studio 版本中构建解决方案 (tesseract.sln)。 但是我省略了–DSTATIC=1 来共享。

我向解决方案x64 添加了一个新配置,然后我从链接器部分的tesseracttesseractmain 附加选项中删除了硬编码的/machine:X86。但是通过cppan-dummy 构建的库项目仍然是 32 位。

想法?

问候 布鲁斯

【问题讨论】:

  • “我认为这是可能的,但我无法获得 .libs:” - 请详细说明。具体来说,您认为什么是可能的?您无法获得哪些 .libs?
  • 9.应该是cmake -DSTATIC=1 ..
  • 但我不想要一个静态库,我想要一个共享库。
  • 我使用 -DSTATIC=1 完成了它,然后添加了 x64 构建,然后尝试将 tesseract 项目构建为 DLL 而不是静态库。

标签: c++ visual-studio-2015 cmake 64-bit tesseract


【解决方案1】:

在对 MSVC 构建系统进行大量挖掘和学习之后,如果您想要一个 64 位共享的 .dll 和 .lib 导入库,请执行以下操作:

转到:https://github.com/peirick/VS2015_Tesseract

  1. 克隆存储库。

  2. 将 build_tesseract.bat 更改为 64 位 Debug,不要忘记更改 call "%programfiles% (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64。运行build_tesseract.bat。

  3. 在 libtesseract 项目的预处理器定义中指定 TESS_EXPORTS,并将其从 .lib 更改为 .dll

这对于知情的人来说可能是显而易见的,困难的一点是解决 TESS_EXPORTS 位,据我所知,它只在代码中提到,并且还使用上面的 repo,因为它具有所有依赖项。为 peirick 设置 repo 并对其进行排序的道具。

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2011-02-10
    • 1970-01-01
    • 2013-06-06
    • 2012-01-21
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多