使用两个对象编译OpenCV程序时,pkg config不起作用
我已经编写了一个OpenCV程序,其中包含main.cpp和peander.cpp。我想编译它们,所以我做了以下工作:使用两个对象编译OpenCV程序时,pkg config不起作用,opencv,compilation,linker,g++,pkg-config,Opencv,Compilation,Linker,G++,Pkg Config,我已经编写了一个OpenCV程序,其中包含main.cpp和peander.cpp。我想编译它们,所以我做了以下工作: g++ -c -Wall `pkg-config --cflags opencv` main.cpp -o main.o g++ -c -Wall `pkg-config --cflags opencv` pedestrian.cpp -o pedestrian.o g++ `pkg-config --libs opencv` pedestrian.o main.o -o de
g++ -c -Wall `pkg-config --cflags opencv` main.cpp -o main.o
g++ -c -Wall `pkg-config --cflags opencv` pedestrian.cpp -o pedestrian.o
g++ `pkg-config --libs opencv` pedestrian.o main.o -o detect
在第三条语句之后,我使用的每个OpenCV命令都被视为未定义的引用。我不知道为什么会发生这种情况,因为其他单对象程序可以很好地使用pkg config。我检查了一下它是否是一个名称空间问题,也不是。任何帮助都将不胜感激 尝试将最后一行的顺序更改为:
g++ -o detect pedestrian.o main.o `pkg-config --libs opencv`
这应该行得通。链接.o文件时,顺序很重要。当链接器在任何.o中找到未知的OpenCV符号时,它会在以下链接元素(即右侧的元素)中查找它的定义。有效。我不知道顺序和链接器有关。谢谢!