我尝试建立一个 C++ 环境来处理图像(使用 opencv)和并行计算。主要问题是我无法成功地将所有部分链接在一起。值得一提的是,我从控制台(windows cmd)使用 mingw,而不是从 IDE
我现在做了什么:
现在用于 CMake 和 opencv:
现在,我想当我尝试用 CMake 构建 mingw 时出现问题。 这是 C++ 文件:
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <omp.h>
using namespace std;
int main() {
#pragma omp parallel
{
int d = omp_get_thread_num();
cout<<d<<" Hello world"<<endl;
}
return 0;
}
这是CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(OpenCV_cpp)
find_package(OpenCV REQUIRED)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
include_directories(${OpenCV_INCLUDE-DIRECTORIES})
add_executable(display_image cplusplus.cpp)
target_link_libraries(display_image ${OpenCV_LIBS})
在命令中:cmake 。 -G "MinGW Makefiles" 工作正常(结束时没有错误)。但是如果我运行 mingw32-make.exe 我得到错误:
[ 50%] 链接 CXX 可执行文件 display_image.exe d:/winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-15.0.7-mingw-w64ucrt-10.0.0-r4/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/ 12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\display_image.dir/objects.a(cplusplus.cpp.obj):cplusplus.cpp:( .text+0xe): 未定义引用 'omp_get_thread_num'
collect2.exe:错误:ld 返回 1 退出状态 mingw32-make[2]: *** [CMakeFiles\display_image.dir uild.make:115: display_image.exe] 错误 1 mingw32-make[1]: *** [CMakeFiles\Makefile2:82: CMakeFiles/display_image.dir/all] 错误 2 mingw32-make: *** [makefile:90: all] 错误 2
从报错可以看出,问题与openMP有关。我该如何解决这个问题?