macOS OpenCV報錯:Undefined symbols for architecture x86_64

VVingerfly發表於2024-05-01

這個錯誤可能是連結的OpenCV庫不對,我這裡的情況是我程式碼使用的GCC編譯器,但是透過 brew install opencv 安裝的OpenCV是使用clang編譯的,程式碼也使用clang編譯器 可以解決這個問題。

要檢視opencv的編譯資訊,可以使用這個命令

opencv_version -v

我這邊輸出

General configuration for OpenCV 4.9.0 =====================================
  Version control:               unknown

  Extra modules:
    Location (extra):            /tmp/opencv-20240429-89341-p9dnw4/opencv-4.9.0/opencv_contrib/modules
    Version control (extra):     unknown

  Platform:
    Timestamp:                   2023-12-27T16:46:55Z
    Host:                        Darwin 21.6.0 x86_64
    CMake:                       3.29.2
    CMake generator:             Unix Makefiles
    CMake build tool:            gmake
    Configuration:               Release

  CPU/HW features:
    Baseline:                    SSE SSE2 SSE3 SSSE3 SSE4_1 POPCNT SSE4_2
      requested:                 SSE4_2
      required:                  SSE4_2
    Dispatched code generation:  FP16 AVX AVX2 AVX512_SKX
      requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      FP16 (0 files):            + FP16 AVX
      AVX (8 files):             + AVX
      AVX2 (36 files):           + FP16 FMA3 AVX AVX2
      AVX512_SKX (5 files):      + FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX

  C/C++:
    Built as dynamic libs?:      YES
    C++ standard:                17
    C++ Compiler:                clang++  (ver 14.0.0.14000029)

可以看到C++的編譯器是使用的 clang++。

參考 stackoverflow

相關文章