【问题标题】:Undefined references to precompiled opencv 2.4对预编译的 opencv 2.4 的未定义引用
【发布时间】:2019-06-23 18:47:35
【问题描述】:

我正在尝试构建一个使用我自己编译的 opencv 库的 cpp 应用程序。

这是我的 Makefile:

APP = appname

APP_OBJS = appname.o

OPENCV_DIR = /{path}/project-spec/meta-user/recipes-apps/opencv-vs/files    
OPENCV_LIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy   -lopencv_flann

CC = g++ 

CXXFLAGS += -std=c++11

all: build install

build: $(APP)

$(APP): $(APP_OBJS)
    $(CXX)  -o $@ $(LDFLAGS) -L$(OPENCV_DIR)/lib $(OPENCV_LIBS) $(APP_OBJS) $(LDLIBS)

clean:
    -rm -f $(APP) *.elf *.gdb *.o

.PHONY: install image

install: $(APP)
    $(TARGETINST) -d $(APP) /bin/$(APP)

%.o: %.cpp
    $(CXX) -c -o $@ $< $(CXXFLAGS) -I$(OPENCV_DIR)/include -I$(LIBISS_DIR) 

lib 文件示例:

$ file libopencv_stitching.so.2.4.11
libopencv_stitching.so.2.4.11: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped

在我的头文件中包含:

#include "opencv2/opencv.hpp"
#include "opencv2/nonfree/nonfree.hpp"

当我运行 petalinux-build -c appnamema​​ke appname 我得到:

| appname.cpp:419: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
| appname.cpp:419: undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
| ...core.hpp:2219: undefined reference to `cv::noArray()
| /path/include/opencv2/core/operations.hpp:2607: undefined reference to `cv::fastFree(void*)'
| etc
| etc
| etc
| collect2: error: ld returned 1 exit status
| ERROR: oe_runmake failed
| make: *** [Makefile:24: appname] Error 1

知道为什么吗?

我目前正在从 Petalinux 2015 迁移到 2018,它在 2015 年运行良好。

【问题讨论】:

    标签: opencv makefile yocto petalinux


    【解决方案1】:

    对于链接器,参数的顺序可能很重要。试试看

    $(APP): $(APP_OBJS)
        $(CXX)  -o $@ $(LDFLAGS) $(APP_OBJS) -L$(OPENCV_DIR)/lib $(OPENCV_LIBS) $(OPENCV_LIBS)   $(LDLIBS)
    

    这不是错字,我有意识地输入了两次$(OPENCV_LIBS),主要是因为我不想开始寻找 OpenCv 库的正确(反向依赖)顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2011-12-10
      • 2012-06-23
      • 2015-11-02
      • 2012-08-16
      • 2013-11-20
      • 2023-03-10
      相关资源
      最近更新 更多