c++ - 在这种情况下,为什么编译器会抛出 “undefined reference to…”错误?

标签 c++ opencv cmake

我正在尝试在Visual Studio中完美运行的CLion中运行代码。该程序具有外部依赖性-OpenCV 4.2.0库。我之前从未与CMake合作过,所以我搜索了有关如何将库链接到项目的解决方案。我正在使用MingW-w64作为我的环境。 CMake的构建没有任何警告,但是在编译项目时会抛出错误“ undefined reference (将OpenCV的任何功能放在此处)。我花了5个小时试图了解问题所在,在论坛上寻找解决方案,当然,在这里,但我未能找到问题的根源,我创建了另一个项目只是为了简化调试。两个项目都使用相同的CMakeLists.txt文件引发了相同的错误。
这是我的CMakeList.txt:

project(SOMETHINF)

set(CMAKE_CXX_STANDARD 20)
set(OpenCV_DIR "E:\\LIBS\\opencv\\build\\x64\\vc15\\lib")
find_package( OpenCV REQUIRED )

include_directories(${OpenCV_INCLUDE_DIRS})
message(${OpenCV_LIBS})
add_executable(SOMETHINF main.cpp)
target_link_libraries(SOMETHINF ${OpenCV_LIBS})

如您所见,我将 message()放入其中,以查看它是否找到文件并执行以下操作:
opencv_calib3dopencv_coreopencv_dnnopencv_features2dopencv_flannopencv_gapiopencv_highguiopencv_imgcodecsopencv_imgprocopencv_mlopencv_objdetectopencv_photoopencv_stitchingopencv_videoopencv_videoioopencv_world
-- Configuring done
-- Generating done
-- Build files have been written to: E:/SOMETHINF/cmake-build-debug

[Finished]

这是代码(还有其他一些不必要的东西仅仅是因为):
enter image description here

而我试图编译它:
enter image description here

有人遇到过类似的事情吗?

最佳答案

看起来您正在使用msvc库,但如果使用MinGW编译器,它将无法正常工作。
您可以阅读此link以了解原因。

提供正确的库应该可以解决您的问题!通常,项目的所有者提供msvc 12/14/15/16和mingw二进制文件。如果您没有它们,我会通过快速搜索找到this unofficial build

关于c++ - 在这种情况下,为什么编译器会抛出 “undefined reference to…”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62013034/

相关文章:

c++ - 如何将 C++ 字符串转换为 char*?

c++ - GMOCK 方法抛出编译错误

c++ - 用于 glutBitmapCharacter 的 glRasterPos 单位

c++ - 如何使用来自 Haxe 的第三方 dll

OpenCV 目标检测边界框

c++ - 物体大小与相机距离的关系

c - 在opencv中获取LAB图像的像素值

c++ - cmake在非标准路径中查找openssl库

cmake - 使用 OpenSSL 作为依赖项构建 CMake 项目

c++ - CMAKE: "No CMAKE_CXX_COMPILER could be found."