1

我一直在使用 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)

该错误看起来有些熟悉,但我无法确定出了什么问题。

在此处输入图像描述

4

3 回答 3

4

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

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

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

您的链接问题将消失。

我使用苹果 LLVM 4.1。


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

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

于 2012-12-06T08:58:35.167 回答
0

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

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

我变了

include <cstdint>
typedef std::uint32_t uint;

到:

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

基于这篇文章

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

于 2013-12-23T01:07:03.490 回答
0

使用类似的东西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

于 2016-02-13T08:06:00.590 回答