C ++ dyld:未加载库-设置'-L'之后>>

问题描述 投票:1回答:1

我目前正在研究一个简单的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中引用了它...

c++ opencv makefile g++ clang++
1个回答
0
投票

如您在注释中所告知,您正在DYLD_FALLBACK_LIBRARY_PATH中设置Makefile。为此,您可能需要执行以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.