链接时未定义的引用 - 缺少库?

Posted

技术标签:

【中文标题】链接时未定义的引用 - 缺少库?【英文标题】:undefined reference when linking - missing libraries? 【发布时间】:2016-10-18 02:19:46 【问题描述】:

我正在使用适用于 Windows、MinGW、NetBeans 的 OpenCV 3.1。

据此,应该只有一个 OpenCV 库集成了许多其他库:

OpenCV 3.x only contains one lib - opencv_world.lib?

我正在尝试使用预构建的库:

http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/windows_install/windows_install.html#windowssetpathandenviromentvariable

链接:

g++ -o dist/Release/MinGW-Windows/program_name 构建/发布/MinGW-Windows/main.o -L../../../lib/opencv/build/x64/vc14/lib -lopencv_world310

我遇到了很多这样的错误:

build/Release/MinGW-Windows/main.o:main.cpp:(.text+0x18b): undefined reference to `cv::imread(cv::String const&, int)'
build/Release/MinGW-Windows/main.o:main.cpp:(.text+0x1a0): undefined reference to `cv::String::deallocate()'

在不包括 opencv_core 等之后我会期待的东西 - 但据我所知,它们现在都应该在 opencv_world310 中。

如何解决这个问题?

【问题讨论】:

你需要在使用之前使用cmake构建......构建后你会发现所有的库和dll......原始源不包含像早期版本那样的预构建库 【参考方案1】:

您正在使用使用 vc14 (Visual Studio 2015) 编译器构建的 OpenCV:

L../../../lib/opencv/build/x64/vc14/lib

你需要用 MinGW 重建 OpenCV,并链接到它。

【讨论】:

以上是关于链接时未定义的引用 - 缺少库?的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的错误 - 链接到自己的库gcc时未定义的引用

尝试使用外部库时未定义的引用

使用本地头文件时未定义的引用

链接时未定义引用符号'socket@GLIBC_2.4'

使用 ifort/icc 时未定义对“main”的引用

C语言里面对啥未定义引用是啥意思?