【问题标题】:imwrite throwing compile error in OpenCVimwrite 在 OpenCV 中抛出编译错误
【发布时间】:2012-12-06 08:33:27
【问题描述】:

我一直在使用 OpenCV 以及 imwrite 函数,但不幸的是,这不再起作用了。

我正在使用 OpenCV 2.4.3 运行以下示例代码:

imwrite("somepath/somefile.png", myMat);

错误:

Undefined symbols for architecture x86_64:
"cv::imwrite(std::string const&, cv::_InputArray const&, std::__debug::vector<int,     std::allocator<int> > const&)", referenced from:
MyProject::this_callback(int, void*) in MyProject.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个错误看起来有点眼熟,但我无法确定是哪里出了问题。

【问题讨论】:

    标签: xcode macos opencv compiler-errors


    【解决方案1】:

    是的,我认为您使用的是 XCode。我有同样的问题。 :)

    如果您更改项目设置,以便:

    • 您使用 GNU++11 作为 C++ 语言方言
    • libstdc++(GNU C++ 标准)作为 C++ 标准库

    您的链接问题将消失。

    我使用 Apple LLVM 4.1。


    当我遇到这个问题时,我曾尝试将一个新目标添加到我知道且有效的旧项目中。然后我刚刚将该目标设为一个源文件程序。

    这一定是 XCode 的“神奇”部分,因为我认为曾经有一段时间我无法在重新启动后让同一个项目工作。 :S

    【讨论】:

    • 我实际上希望你是对的,因为我的旧项目对编译器有一些类似的设置。我正在运行 LLVM 3.1 一个相当旧的版本,但可以使用。请看我的原始帖子,带有屏幕截图。错误仍未解决。
    • 我最近刚刚更新到 XCode 4.5,它对我来说很好用。我很担心,因为最初我恢复到 XCode 4.2,因为我在使用 XCode 4.3 时遇到了一些问题。但我可以说,2-3 周后我对新版本没有任何问题。
    • 这似乎不适用于带有 LLVM 5.0 和上述设置的 Xcode 5。使用 libstdc++ 时,OpenCV 在 cvdef.h 中抱怨“找不到‘cstdint’文件”。
    【解决方案2】:

    我做了 Barnabas 所做的事情,并且在 cvdef.h 上也遇到了问题。我变得绝望了,我所做的只是更改了头文件。

    在 /usr/local/cvdef.h 第 205 行:

    我变了

    include <cstdint>
    typedef std::uint32_t uint;
    

    到:

    include <tr1/cstdint>
    typedef std::tr1::uint32_t uint;
    

    基于this post

    我认为 opencv 开发人员应该对 64 位的代码进行一些更改..

    【讨论】:

      【解决方案3】:

      使用 clang version 3.8.0 (trunk 257459) 之类的东西,而不是 gcc version 4.9.2 (MacPorts gcc49 4.9.2_1+universal) 来编译

      供参考,cmd:clang++ -std=c++11 `pkg-config --cflags --libs opencv` code.cpp -o code

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多