使用两个对象编译OpenCV程序时,pkg config不起作用

使用两个对象编译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

我已经编写了一个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 detect

在第三条语句之后,我使用的每个OpenCV命令都被视为未定义的引用。我不知道为什么会发生这种情况,因为其他单对象程序可以很好地使用pkg config。我检查了一下它是否是一个名称空间问题,也不是。任何帮助都将不胜感激

尝试将最后一行的顺序更改为:

g++ -o detect pedestrian.o main.o `pkg-config --libs opencv` 

这应该行得通。链接.o文件时,顺序很重要。当链接器在任何.o中找到未知的OpenCV符号时,它会在以下链接元素(即右侧的元素)中查找它的定义。

有效。我不知道顺序和链接器有关。谢谢!