Итак, у меня есть библиотеки OpenCV, загруженные отсюда https://sourceforge.net/projects/opencvlibrary/files/3.4.6/opencv-3.4.6-vc14_vc15.exe/download
CMake gui с cmakelist.txt вот так
cmake_minimum_required (ВЕРСИЯ 2.8)
project (Display)
find_package (OpenCV REQUIRED)
сообщение (STATUS "Состояние библиотеки OpenCV:") сообщение (STATUS "config: $ {OpenCV_DIR}") сообщение (STATUS "
version: $ {OpenCV_VERSION} ") сообщение (STATUS" библиотеки: $ {OpenCV_LIBS} ") сообщение (STATUS"
include path: $ {OpenCV_INCLUDE_DIRS} ")
add_executable (Display DisplayImage.cpp)
target_link_libraries (Показать $ {OpenCV_LIBS})
и иметь простой cpp, подобный этому
#include <stdio.h>
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv )
{
// cout << "You have entered " << argc
// << " arguments:" << "\n";
// for (int i = 0; i < argc; ++i)
// cout << argv[i] << "\n";
// cout << "a" << argv[1];
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
printf("Hello World!");
return 0;
}
, уже настроив его с помощью cmake-gui, и это отображается
Состояние библиотеки OpenCV: конфиг: D: / opencv / build / x64 / vc15 / lib версия: 3.4.6 библиотеки: opencv_calib3d; opencv_core; opencv_dnn; opencv_features2d; opencv_flann; opencv_highci; код opencv;opencv_ml; opencv_objdetect; opencv_photo; открытаяcv_shape; opencv_stitching; opencv_superres; opencv_video; opencv_videoio; opencv_videostab; opencv_world include path: D: / opencv / build / include; D: / opencv / build / include / opencv; D: / opencv / build / include / donec2
кажется хорошим, верно?а затем в каталоге сборки из командной строки я набрал mingw32-make
, и это показывает
CMakeFiles \ Display.dir / objects.a (DisplayImage.cpp.obj): DisplayImage.cpp :(.text + 0x72): неопределенная ссылка на cv::imread(cv::String const&, int)'
CMakeFiles\Display.dir/objects.a(DisplayImage.cpp.obj):DisplayImage.cpp:(.text+0xe3):
undefined reference to
cv :: namedWindow (cv :: String const &, int) 'CMakeFiles \ Display.dir / objects.a (DisplayImage.cpp.obj): DisplayImage.cpp :(. text+ 0x129): неопределенная ссылка на cv::imshow(cv::String const&,
cv::_InputArray const&)'
CMakeFiles\Display.dir/objects.a(DisplayImage.cpp.obj):DisplayImage.cpp:(.text+0x149):
undefined reference to
cv :: waitKey (int) 'CMakeFiles \ Display.dir / objects.a (DisplayImage.cpp.obj): DisplayImage.cpp :(. Text $ _ZN2cv6StringC1EPKc [__ ZN2cv6StringC1EPKc] + 0x42): неопределенная ссылка на cv::String::allocate(unsigned int)'
CMakeFiles\Display.dir/objects.a(DisplayImage.cpp.obj):DisplayImage.cpp:(.text$_ZN2cv6StringD1Ev[__ZN2cv6StringD1Ev]+0xf):
undefined reference to
cv :: String :: deallocate () 'CMakeFiles \ Display.dir / objects.a (DisplayImage.cpp.obj): DisplayImage.cpp :(. text $ ZN2cv6StringaSERKS0 [__ZN2cv6StringaSERKS0 _] + 0x1c): неопределенная ссылка на cv::String::deallocate()'
CMakeFiles\Display.dir/objects.a(DisplayImage.cpp.obj):DisplayImage.cpp:(.text$_ZN2cv3MatD1Ev[__ZN2cv3MatD1Ev]+0x2d): undefined reference to
cv :: fastFree (void *) 'CMakeFiles \ Display.dir / objects.a (DisplayImage.cpp.obj): DisplayImage.cpp :(. Text $ _ZN2cv3Mat7releaseEvEvEv] [v3].+ 0x40): неопределенная ссылка на cv::Mat::deallocate()'
CMakeFiles\Display.dir/objects.a(DisplayImage.cpp.obj):DisplayImage.cpp:(.text$_ZN2cv3MataSEOS0_[__ZN2cv3MataSEOS0_]+0xb4):
undefined reference to
cv :: fastFree (void *) 'collect2.exe: ошибка: ld вернул 1 состояние выхода mingw32-make [2]: * [CMakeFiles \ Display.dir \ build.make: 104: Display.exe] Ошибка 1 mingw32-make [1]: * [CMakeFiles \ Makefile2: 72: CMakeFiles /Display.dir / all] Ошибка 2 mingw32-make: *** [Makefile: 83: all] Ошибка 2
Как мне это исправить?или это потому, что я использую библиотеку прямо с сайта?я также пытаюсь что-то наподобие ввода неправильного параметра в функцию imread
, а затем набираю mingw32-make
, и это говорит мне, что я использую неправильный параметр.Если они знают, что я использовал неправильный параметр, то почему они не могут сказать, для чего imread
(или почему это неопределенная ссылка?)?Я использую windows.
Я очень плохо знаком с этими библиотеками, mingw и cmake, поэтому извините, если мой вопрос глупый.
этот вопрос не повторяется, потому что,я использую windows и mingw32-make, все, кто задает этот вопрос, не использовали его, и этот вопрос находится в другой ситуации, чем у меня.