將 OpenCV C++ 項目移植 Android NDK 時,IDE(如 CLion、Android Studio)提示:
Invalid arguments 'Candidates are: double contourArea(const cv::_InputArray &, bool)'Method 'size' could not be resolvedType 'CV_MAT_ELEM_PTR(*cMatrix, 0, 0)' could not be resolvedCV_MAT_ELEM_PTR 等宏展開涉及指針算術,靜態分析器難以完整解析。std::vector::at、size() 簽名不匹配誤報。執行 ndk-build 或 cmake --build,**若編譯通過且運行正常,則為 IDE 誤報**,可安全忽略。
cmake_minimum_required(VERSION 3.10.2)
project("native-lib")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 指定 OpenCV 路徑
set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../opencv/sdk/native/jni)
find_package(OpenCV REQUIRED)
add_library(native-lib SHARED native-lib.cpp)
target_link_libraries(native-lib ${OpenCV_LIBS} log)
externalNativeBuild 配置正確。ANDROID_NDK_HOME;重新加載 CMake。c_cpp_properties.json 配置 includePath 包含 NDK sysroot、OpenCV headers。CvSeq, cvCreateSeq),改用 C++ API(std::vector<cv::Point>)。contourArea(contour, false) → contourArea(cv::_InputArray(contour), false)。CV_MAT_ELEM_PTR → 封裝安全的 Mat::at<T>()。cv::Mat, std::vector, cv::Algorithm 等 C++ 風格接口。遇到「could not be resolved」先編譯試運行,九成九是 IDE 索引問題,配置好路徑即可消除。