我编写了一个包含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。我检查了它是否是名称空间问题而且它也不是。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试将最后一行中的顺序更改为:
g++ -o detect pedestrian.o main.o `pkg-config --libs opencv`
这应该有效。链接.o文件时,顺序很重要。当链接器在任何.o中找到并且未知的OpenCV符号时,它会在以下链接元素中查找其定义(即在元素中向右)。