我在我的笔记本电脑(Macbook Lion系统)上本地搭建了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项目中。但是,在构建测试应用程序时出现了链接错误,并且它们似乎是名称混淆问题。
i386架构下未定义的符号:
"cv::namedWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", 在main.o中引用:
_main in main.o
"cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", 在main.o中引用:
_main in main.o
"cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)", 在main.o中引用:
_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架构的。
有任何想法可能导致此问题?