我正在尝试在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]
这是代码(还有其他一些不必要的东西仅仅是因为):
而我试图编译它:
有人遇到过类似的事情吗?
最佳答案
看起来您正在使用msvc库,但如果使用MinGW编译器,它将无法正常工作。
您可以阅读此link以了解原因。
提供正确的库应该可以解决您的问题!通常,项目的所有者提供msvc 12/14/15/16和mingw二进制文件。如果您没有它们,我会通过快速搜索找到this unofficial build。
关于c++ - 在这种情况下,为什么编译器会抛出 “undefined reference to…”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62013034/