前几天安装了Ubuntu,用apt-get安装了build_essentials、opencv、highgui等。g++是4.6.1,opencv好像是2.1.0..我没有从源码构建opencv..
我们有一些使用 opencv 功能的软件。让我们假设源文件名为 a.cpp 和 b.cpp。我编译为 ao 和 bo,然后将它们放入一个 .so 库(称为 libab.so)。
最后,有一个包含 main 的文件(称为 z.cpp)。我尝试从中构建一个可执行文件,但我收到大量 cv:: 东西的“未定义引用”错误。我的链接线看起来像这样:
g++ -fPIC -g z.cpp -L../lib -lab -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
然后我得到未定义的参考错误(所有这些都是 cv:: stuff)。
有趣的是,如果我直接链接到我的 .o 文件,它构建得很好。所以这:
g++ -fPIC -g z.cpp a.o b.o -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
作品。
我读过的所有内容似乎都暗示这可能是一个链接线排序问题,但我已经尝试了所有排序排列并遇到了同样的问题,所以我真的不认为这是我的问题,但我仍然可能是错的。任何人都知道如何使用我的库构建它,以及如果我使用库中的完整 .o 文件成功构建但不能使用库本身构建,为什么会有不同的行为?