【发布时间】:2022-04-01 10:06:27
【问题描述】:
我面临错误的 Android 项目具有用于图像处理的一些 cpp 类的 OpenCV 和自定义实现。我在 CMakeLists.txt 中包含了 opencv-3-3-0-android-sdk,它用于构建原生组件。
include_directories( ../opencv-3-3-0-android-sdk/sdk/native/jni/include/)
add_library( lib_opencv
SHARED
IMPORTED )
set_target_properties( lib_opencv
PROPERTIES IMPORTED_LOCATION
${PROJECT_SOURCE_DIR}/../opencv-3-3-0-android-sdk/sdk/native/libs/${ANDROID_ABI}/libopencv_java3.so )
调用以下方法时会抛出错误:
void saveMat(const cv::Mat& mat, std::string dst){
cv::imwrite(dst, mat);//throws error - undefined reference
}
运行项目时出现以下错误,指出无法引用 imwrite。虽然
error: undefined reference to 'cv::imwrite(cv::String const&, cv::_InputArray const&, std::__ndk1::vector<int, std::__ndk1::allocator<int> > const&)'.
虽然使用 ctrl 导航到该功能确实将我带到 opencv2/imgcodecs.hpp 内的正确功能。
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
const std::vector<int>& params = std::vector<int>());
对我来说,这似乎是链接错误。有什么想法为什么在运行应用程序时会引发上述错误?
【问题讨论】:
-
你的opencv是用gnu_stl构建的吗?您在本机代码中使用 c++_stl 吗?
-
@DmitriiZ。将 C++_Stl 用于本机代码。
-
您需要在本机代码中使用 gnu_stl 或使用 c++_stl 构建 opencv。
-
@DmitriiZ。多谢,伙计。但我使用的是
opencv-3-3-0-android-sdk,它是运行 make & make install 命令的输出。请多多指教。
标签: android android-studio opencv opencv4android