编译具有两个对象的OpenCV程序时,pkg-config无法正常工作

时间:2014-07-22 13:32:07

标签: opencv compilation linker g++ pkg-config

我编写了一个包含main.cpp和pedestrian.cpp的OpenCV程序。我想编译它们,所以我做了以下几点:

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。我检查了它是否是名称空间问题而且它也不是。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

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