无法在 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")
出于某种原因解决了这个问题。
我在 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")
出于某种原因解决了这个问题。