我目前正在研究一个简单的C ++项目,但情况要复杂得多。我使用的是OpenCV库,我将其移到源代码旁边的文件夹中,并以与pkg-config --cflags --libs opencv4
相同的方式从Makefile中引用了它,但只是将路径更改为相对于要与源代码一起传递的文件夹。
问题是运行我的Makefile之后
CC = clang++ CFLAGS = -std=c++17 -g -Wall SRCS = DisplayImage.cpp PROG = DisplayImage OPENCV = -I opencv/include/opencv4/opencv -I opencv/include/opencv4 -L opencv/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core LIBS = $(OPENCV) $(PROG):$(SRCS) $(CC) $(CFLAGS) -o $(PROG) $(SRCS) $(LIBS)
我设置
-L
标志的位置。make
命令运行平稳。但是在调用./DisplayImage
之后,出现此错误:
dyld: Library not loaded: /usr/local/opt/opencv/lib/libopencv_gapi.4.2.dylib Referenced from: /Users/user/Downloads/Display_Image3/./DisplayImage Reason: image not found Abort trap: 6
最重要的部分是此路径
/usr/local/opt/opencv/lib/libopencv_gapi.4.2.dylib
,根据我的理解,该路径为库的默认路径。我尝试设置DYLD_LIBRARY_PATH
和LD_LIBRARY_PATH`,但效果不佳,并给了我同样的错误。
[请注意,我需要从指定的文件夹中调用库。谢谢。
我目前正在研究一个简单的C ++项目,但情况要复杂得多。我正在使用OpenCV库,该库已移到源代码旁边的文件夹中,并从Makefile中引用了它...
如您在注释中所告知,您正在DYLD_FALLBACK_LIBRARY_PATH
中设置Makefile
。为此,您可能需要执行以下操作: