【问题标题】:error: reference to ‘int64’ is ambiguous Compiling problem opencv + dlib in QT错误:对“int64”的引用不明确 QT 中的编译问题 opencv + dlib
【发布时间】:2019-04-18 11:35:40
【问题描述】:

我这里的情况很奇怪:

我是 Mac Os X Qt 的工作代码库。我试图用相同的库(opencv + dlib)在 ubuntu 上编译相同的代码,它给出了很多错误?

整天让我发疯:(有什么解决办法吗?

/usr/local/include/opencv2/dnn/dnn.hpp:314:17: error: reference to ‘int64’ is ambiguous
         virtual int64 getFLOPS(const std::vector<MatShape> &inputs,
                 ^~~~~
In file included from /usr/local/include/opencv2/core/cvdef.h:91:0,
                 from /usr/local/include/opencv2/core.hpp:52,
                 from /usr/local/include/opencv2/highgui.hpp:46,
                 from ../SFT-V2/worker.h:18,
                 from ../SFT-V2/widget.h:5,
                 from ../SFT-V2/main.cpp:1:
/usr/local/include/opencv2/core/hal/interface.h:61:20: note: candidates are: typedef int64_t int64
    typedef int64_t int64;

    typedef int64_t int64;

【问题讨论】:

  • 你需要找到还有谁定义了int64类型。根据编译器,定义不止一个。可能重新排序包含语句可能会有所帮助。
  • 在“/usr/local/include/opencv2/core/hal/interface.h”中缺少包含保护?

标签: c++ qt opencv g++ dlib


【解决方案1】:

您对int64 的定义很可能与此类型的另一个定义发生冲突。

有时在 ubuntu 中,即使 C++ 标准允许,编译器也不允许你对同一事物进行两次 typedef。

重新排序包含应该可以解决问题。

【讨论】:

    【解决方案2】:

    我先删除了:

    使用 cpp 文件中的命名空间 dlib,该文件已经是其标题,但错误消失了。

    但为什么它在 mac (clang) 上工作而不在 ubuntu (g++) 上工作?整天让我发疯,想找到解决办法。

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多