键入对 `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 *))

“void”函数中的NoReturn与None - 在Python 3.6中键入注释

如何键入 Redux thunk 动作创建者以返回承诺

c语言键入scanf后printf无法显示

Typescript:这种用于键入函数的键入方法是啥?