Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python make调用期间找不到OpenCV库 我试图从Gigub RePO中编写< >代码>一个C++程序。我已将回购协议和cd克隆到其中。按照说明,我运行make进行构建。以下是原始生成文件: # Makefile for heartbeat appname := Heartbeat CXX := g++ RM := rm -f CXXFLAGS := -Wall -g -std=c++11 -I/usr/local/include/opencv4 LDFLAGS := -g LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_objdetect -lopencv_video -lopencv_videoio SRCS := $(shell find . -name "*.cpp") OBJS = $(subst .cpp,.o,$(SRCS)) all: $(appname) $(appname): $(OBJS) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS) depend: .depend .depend: $(SRCS) $(RM) ./.depend $(CXX) $(CXXFLAGS) -MM $^>>./.depend; clean: $(RM) $(appname) $(OBJS) dist-clean: clean $(RM) *~ .depend include .depend # Makefile for heartbeat appname := Heartbeat CXX := g++ RM := rm -f CXXFLAGS := -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include LDFLAGS := -g LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio SRCS := $(shell find . -name "*.cpp") OBJS = $(subst .cpp,.o,$(SRCS)) all: $(appname) $(appname): $(OBJS) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS) depend: .depend .depend: $(SRCS) $(RM) ./.depend $(CXX) $(CXXFLAGS) -MM $^>>./.depend; clean: $(RM) $(appname) $(OBJS) dist-clean: clean $(RM) *~ .depend include .depend_Python_C++_Opencv_Gcc_Makefile - Fatal编程技术网

Python make调用期间找不到OpenCV库 我试图从Gigub RePO中编写< >代码>一个C++程序。我已将回购协议和cd克隆到其中。按照说明,我运行make进行构建。以下是原始生成文件: # Makefile for heartbeat appname := Heartbeat CXX := g++ RM := rm -f CXXFLAGS := -Wall -g -std=c++11 -I/usr/local/include/opencv4 LDFLAGS := -g LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_objdetect -lopencv_video -lopencv_videoio SRCS := $(shell find . -name "*.cpp") OBJS = $(subst .cpp,.o,$(SRCS)) all: $(appname) $(appname): $(OBJS) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS) depend: .depend .depend: $(SRCS) $(RM) ./.depend $(CXX) $(CXXFLAGS) -MM $^>>./.depend; clean: $(RM) $(appname) $(OBJS) dist-clean: clean $(RM) *~ .depend include .depend # Makefile for heartbeat appname := Heartbeat CXX := g++ RM := rm -f CXXFLAGS := -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include LDFLAGS := -g LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio SRCS := $(shell find . -name "*.cpp") OBJS = $(subst .cpp,.o,$(SRCS)) all: $(appname) $(appname): $(OBJS) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS) depend: .depend .depend: $(SRCS) $(RM) ./.depend $(CXX) $(CXXFLAGS) -MM $^>>./.depend; clean: $(RM) $(appname) $(OBJS) dist-clean: clean $(RM) *~ .depend include .depend

Python make调用期间找不到OpenCV库 我试图从Gigub RePO中编写< >代码>一个C++程序。我已将回购协议和cd克隆到其中。按照说明,我运行make进行构建。以下是原始生成文件: # Makefile for heartbeat appname := Heartbeat CXX := g++ RM := rm -f CXXFLAGS := -Wall -g -std=c++11 -I/usr/local/include/opencv4 LDFLAGS := -g LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_objdetect -lopencv_video -lopencv_videoio SRCS := $(shell find . -name "*.cpp") OBJS = $(subst .cpp,.o,$(SRCS)) all: $(appname) $(appname): $(OBJS) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS) depend: .depend .depend: $(SRCS) $(RM) ./.depend $(CXX) $(CXXFLAGS) -MM $^>>./.depend; clean: $(RM) $(appname) $(OBJS) dist-clean: clean $(RM) *~ .depend include .depend # Makefile for heartbeat appname := Heartbeat CXX := g++ RM := rm -f CXXFLAGS := -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include LDFLAGS := -g LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio SRCS := $(shell find . -name "*.cpp") OBJS = $(subst .cpp,.o,$(SRCS)) all: $(appname) $(appname): $(OBJS) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS) depend: .depend .depend: $(SRCS) $(RM) ./.depend $(CXX) $(CXXFLAGS) -MM $^>>./.depend; clean: $(RM) $(appname) $(OBJS) dist-clean: clean $(RM) *~ .depend include .depend,python,c++,opencv,gcc,makefile,Python,C++,Opencv,Gcc,Makefile,当我运行它时,会出现以下错误: g++ -Wall -g -std=c++11 -I/usr/local/include/opencv4 -g -o Heartbeat ./RPPG.o ./Heartbeat.o ./opencv.o -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio ld: lib

当我运行它时,会出现以下错误:

g++ -Wall -g -std=c++11 -I/usr/local/include/opencv4 -g -o Heartbeat ./RPPG.o ./Heartbeat.o ./opencv.o -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio
ld: library not found for -lopencv_core
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Heartbeat] Error 1
g++ -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include   -c -o Heartbeat.o Heartbeat.cpp
g++ -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include   -c -o opencv.o opencv.cpp
g++ -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include -g -o Heartbeat ./RPPG.o ./Heartbeat.o ./opencv.o -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio
ld: library not found for -lopencv_core
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Heartbeat] Error 1
所以我调整了opencv的-I include路径,以反映我在机器上安装它的位置。我在这里安装了它(并且经常在python中使用它):
Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd\u 1/include/opencv2

有了这个,我创建了一个新的Makefile:

# Makefile for heartbeat
appname := Heartbeat

CXX := g++
RM := rm -f
CXXFLAGS := -Wall -g -std=c++11 -I/usr/local/include/opencv4
LDFLAGS := -g
LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_objdetect -lopencv_video -lopencv_videoio

SRCS := $(shell find . -name "*.cpp")
OBJS = $(subst .cpp,.o,$(SRCS))

all: $(appname)

$(appname): $(OBJS)
    $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS)

depend: .depend

.depend: $(SRCS)
    $(RM) ./.depend
    $(CXX) $(CXXFLAGS) -MM $^>>./.depend;

clean:
    $(RM) $(appname) $(OBJS)

dist-clean: clean
    $(RM) *~ .depend

include .depend
# Makefile for heartbeat
appname := Heartbeat

CXX := g++
RM := rm -f
CXXFLAGS := -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include
LDFLAGS := -g
LDLIBS := -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio

SRCS := $(shell find . -name "*.cpp")
OBJS = $(subst .cpp,.o,$(SRCS))

all: $(appname)

$(appname): $(OBJS)
        $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(appname) $(OBJS) $(LDLIBS)

depend: .depend

.depend: $(SRCS)
        $(RM) ./.depend
        $(CXX) $(CXXFLAGS) -MM $^>>./.depend;

clean:
        $(RM) $(appname) $(OBJS)

dist-clean: clean
        $(RM) *~ .depend

include .depend
但我仍然得到这个错误:

g++ -Wall -g -std=c++11 -I/usr/local/include/opencv4 -g -o Heartbeat ./RPPG.o ./Heartbeat.o ./opencv.o -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio
ld: library not found for -lopencv_core
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Heartbeat] Error 1
g++ -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include   -c -o Heartbeat.o Heartbeat.cpp
g++ -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include   -c -o opencv.o opencv.cpp
g++ -Wall -g -std=c++11 -I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include -g -o Heartbeat ./RPPG.o ./Heartbeat.o ./opencv.o -lopencv_core -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lobjdetect -lopencv_video -lopencv_videoio
ld: library not found for -lopencv_core
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Heartbeat] Error 1
我不知道该怎么办。我已经在我的-I调用引用的路径中安装了所有库。为什么
make
找不到它们


作为参考,我在Mac(Catalina OS)上运行。

自制或多或少总是将其安装的所有二进制文件进行符号链接:

/usr/local/Cellar/PACKAGENAME/PACKAGEVERSION

因此,您只需要路径上的
/usr/local/bin
,就可以获得所有自制软件包的最新二进制文件。那么,让我们看看我用自制软件安装的
pdfimages

ls -l /usr/local/bin/pdfimages
lrwxr-xr-x   1 mark  admin        38 Jul 14 15:54 pdfimages -> ../Cellar/poppler/0.90.1/bin/pdfimages

同样,它将所有头文件放入

/usr/local/include
所有的图书馆

/usr/local/lib
因此,您通常只需要以下内容即可编译:

g++ -std=c++XX source.cpp -I /usr/local/include -L /usr/local/lib -lXXX -lYYY -lZZZ -o program

否则,只需使用
find
查找库,然后相应地设置
-lxxx

# Look for OpenCV libraries in /usr, /opt and $HOME
find /usr /opt $HOME -type f -iname "*opencv*so" 2> /dev/null


或者,您可以使用与所述完全相同的方式使用
pkgconfig
。您需要使用
-L
设置库文件夹的位置,类似于使用
-I
添加包含路径的方式。是否使用自制?@MarkSetchell是。我想我是通过pip或conda安装了cv2。我应该改为通过brew安装吗?@drescherjm这样
g++-Wall-g-std=c++11-I/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include-L/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include-g-o Heartbeat./RPPG.o./Heartbeat.o/opencv.o-lopenncv-lopenncv-core-lopencv-lopencv-lopencv-dnn-lopencv-lopencv-highgui-lopencv-lopencv-lopencu-lopencv-lopencv-highgui-lopencu-lopencv-lopencv-lopencu-lo。我仍然会遇到同样的错误。
-L/Users/asi/anaconda3/pkgs/libopencv-3.4.2-h7c891bd_1/include
类似,但我认为opencv库的.a或.so文件不在此文件夹中。您需要使用正确的路径。