链接时未定义的引用 - 缺少库?
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,并链接到它。
【讨论】:
以上是关于链接时未定义的引用 - 缺少库?的主要内容,如果未能解决你的问题,请参考以下文章