键入对 `cv::fastFree(void*)' 的未定义引用
Posted
技术标签:
【中文标题】键入对 `cv::fastFree(void*)\' 的未定义引用【英文标题】:Type undefined reference to `cv::fastFree(void*)'键入对 `cv::fastFree(void*)' 的未定义引用 【发布时间】:2013-12-10 00:07:46 【问题描述】:我在 Win8、最新的 MinGW 和 Eclipse Kepler R1、CDT 上开始了 opencv 2.4.7 的教程。 C++ 编译器包含引用 [path-to-opencv]\open247\build\include。
在 MinGW C++ 链接器中,我添加了库路径 [path-to-opencv]\open247\build\x64\vc11\lib。 vc11 目录包含我读过的 VisualStudio 库。用 MinGW 编译它们还可以吗?
我为这个示例添加了 core 和 highgui 库(我认为我们不需要更多)。
但是,对于下面这个简单的空闲代码,我引发了以下编译错误。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
Mat image;
编译的错误是:
Description Resource Path Location Type
undefined reference to `cv::fastFree(void*)' FirstOpenCV line 278, external location: C:\Users\John\Documents\Software\opencv247\build\include\opencv2\core\mat.hpp C/C++ Problem
这是什么原因?
如果我添加
namedWindow("testWindow", 1);
我什至得到这个错误
Description Resource Path Location Type
undefined reference to `cv::namedWindow(std::string const&, int)' main.cpp /FirstOpenCV/src line 23 C/C++ Problem
【问题讨论】:
不,vc11 库不行。有一个 mingw 文件夹,使用它们。 @berak 在我下载所有发行版之前,它在哪个发行版中? Linux/Mac? 应该已经在您的磁盘上。在构建文件夹中的某个位置。 @berak 看起来它已从 2.4.7 中删除。 【参考方案1】:您的图书馆链接是否正确?
-lopencv_core
-lopencv_highgui
-L<opencv_library_path>
必须在编译器/链接器命令行上的源文件之后指定库。 (链接器跟踪未解析的符号,并通过后面的命令行参数解析它们。)
【讨论】:
感谢您注意必须在源文件之后指定库。这有效!以上是关于键入对 `cv::fastFree(void*)' 的未定义引用的主要内容,如果未能解决你的问题,请参考以下文章
SWIG 链接器:未定义符号:_ZN2cv8fastFreeEPv (cv::fastFree(void*))
SWIG链接器:未定义的符号:_ZN2cv8fastFreeEPv(cv :: fastFree(void *))