【问题标题】:OpenCV - 'cstdint' file not foundOpenCV - 找不到“cstdint”文件
【发布时间】:2015-12-09 17:07:58
【问题描述】:

我正在使用 Mac 10.10 和 OpenCV 3.0,当我编译我的项目时出现此错误:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

之后我把c++标准库改成libstdc++,又出现了一个错误:

/usr/local/include/opencv2/hal/defs.h:271:14: 'cstdint' 文件未找到

希望有人可以帮助我

【问题讨论】:

  • 如果您解决了问题,请告诉我。我也有同样的。
  • 真的很抱歉,我不记得如何解决了。我猜这可能是由xcode编译器引起的。我的 Mac 已经重新安装,所以我按照本教程进行操作,它适用于我 mac-opencv-projects.blogspot.com/2014/01/…

标签: c++ xcode macos opencv


【解决方案1】:

基于此question 中的最佳答案,有两种方法可以解决此问题,因为您使用的是 macOS,并且您的默认编译器是 Clang。您可以使用:

#include <tr1/cstdint>

#include <stdint.h>

而不是 cstdint,它是 libc++ 的一部分。

【讨论】:

    【解决方案2】:

    我在尝试将针对 C++ 编写的标头 (.h) 导入到一些 Objective C 代码 (.m) 时遇到了这个问题。

    对我来说,解决方案是创建一个中间的 Objective C++ 文件 (.mm) 和头文件,该文件导入 C++ 头文件,然后导出与 c 兼容的包装函数。

    标头中有这样的内容,以使其与 Objective-C (.m) 代码配合得很好

    #if defined(__cplusplus)
    extern "C" {
    #endif
    
    const char *MyNewFunction(void); // or whatever
    
    #if defined(__cplusplus)
    }
    #endif
    

    (感谢 Dave Hylands 帮助我解决了所有这些问题。)

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2012-03-28
      • 2018-06-26
      相关资源
      最近更新 更多