我在运行Lion的Macbook上使用
在本地构建了i386的OpenCV风格cmake -G "Unix Makefiles" -D CMAKE_OSX_ARCHITECTURES=i386 -D CMAKE_C_FLAGS=-m32 -D CMAKE_CXX_FLAGS=-m32 ..
make -j8
sudo make install
构建并发布的库很好,我已将它们添加到我的xcode项目中。 但是,在构建我的测试应用程序时会出现链接错误,而且它们似乎是名称错位问题。
Undefined symbols for architecture i386:
"cv::namedWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in main.o
"cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in main.o
"cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)", referenced from:
_main in main.o
以cv :: imread为例,它从libopencv_highgui.dylib导出,名称为:
00007510 (__TEXT,__text) external __ZN2cv6imreadERKSsi
而main.o引用符号
U __ZN2cv6imreadERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEi
另一方面,来自同一dylib链接的函数__ZN2cv7waitKeyEi
很好。
测试应用程序和框架都适用于i386 arch。
可能导致此问题的任何想法?
答案 0 :(得分:2)
我遇到了同样的问题。我认为问题可能是如果您使用the MacPorts来编译OpenCV库,它们可能是由GCC根据it's Portfile构建的。我将XCode(Apple LLVM 4.1)中使用的编译器切换到LLVM GCC 4.2,现在它可以正常工作。
希望它有所帮助。
答案 1 :(得分:0)
我遇到了同样的问题,并使用libstdc ++作为C ++标准库来修复它。它默认为libc ++
在项目构建设置下 - &gt; APPLE LLVM编译器4.2 - 语言 - &gt; C ++标准库