无法在 C++ 中创建 tesseract::TessBaseAPI 的实例

Can't make instance of tesseract::TessBaseAPI in c++

我在 macOS 上使用 vcpkg 安装了 tesseract 和 opencv,一切正常。

现在我正在尝试使用 cmake 制作一个简单的 tesseract 项目但是:

tesseract::TessBaseAPI text_recognizer;

投掷:

libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: collate_byname::collate_byname failed to construct for

然后我改成了:

tesseract::TessBaseAPI *text_recognizer;

它不会抛出任何错误,但是如果我尝试用

初始化它
text_recognizer = new tesseract::TessBaseAPI();

我和以前一样:

libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: collate_byname::collate_byname failed to construct for

如果有人能指出正确的方向来解决问题就足够了!

编辑:

运行 cmake .. 抛出警告:

ld: warning: direct access in function 'unsigned long 
std::__1::__str_find_first_of<char, unsigned long, 
std::__1::char_traits<char>, 18446744073709551615ul>(char const*, 
unsigned long, char const*, unsigned long, unsigned long)' from file 
'../vcpkg/installed/x64- 
osx/debug/lib/libopencv_cored.a(logtagconfigparser.cpp.o)' to global 
weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file 
'CMakeFiles/startProject.dir/main.cpp.o' means the weak symbol cannot 
be overridden at runtime. This was likely caused by different 
translation units being compiled with different visibility settings.

编辑 2

我的CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
set( CMAKE_TOOLCHAIN_FILE "/Users/alejandrocamba/Documents/screen-photo- 
to-text-quality/vcpkg/scripts/buildsystems/vcpkg.cmake" )

project(startProject)

find_package(OpenCV REQUIRED)
find_package(Tesseract CONFIG REQUIRED)
find_package(Leptonica CONFIG REQUIRED)
find_package(libzip REQUIRED)
find_package(libzippp CONFIG REQUIRED)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

add_executable(startProject main.cpp)

if( OpenCV_FOUND )
  # Additional Include Directories
  include_directories( ${OpenCV_INCLUDE_DIRS} )

  # Additional Library Directories
  link_directories( ${OpenCV_LIB_DIR} )

  # Additional Dependencies
  target_link_libraries(startProject ${OpenCV_LIBS} )
endif()

target_link_libraries(startProject PRIVATE leptonica)
target_link_libraries(startProject PRIVATE libtesseract)
target_link_libraries(startProject PRIVATE zip)
target_link_libraries(startProject PRIVATE libzippp::libzippp)

我找不到答案所以我开始随机尝试,并添加

set(CMAKE_BUILD_TYPE "RELEASE")

出于某种原因解决了这个问题。