我正在尝试制作一个使用OpenCV和另一个C ++库的iPhone应用程序。 它似乎编译和链接很好。它确实有效。 我只是想摆脱这个丑陋的警告:
ld: warning: std::vector<int, std::allocator<int> >::_M_insert_aux(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int const&)has different visibility (default) in /Users/nacho4d/Documents/Projects/iOS/iAR/opencv_device/lib/libcxcore.a(cxdatastructs.o) and (hidden) in /Users/nacho4d/Documents/Projects/iOS/iAR/build/iAR.build/Debug-iphoneos/iAR.build/Objects-normal/armv6/combination.o
这是什么意思?,我该如何解决?
以防万一,这是组合类的标题,来自我提到的库。
//combination.h
typedef std::vector<int> combi;
typedef std::vector< combi > allcombi;
class Combination
{
public:
void Init(const int n, const int m);
allcombi::iterator begin();
allcombi::iterator end();
allcombi::const_iterator begin() const;
allcombi::const_iterator end() const;
private:
void Nest(int nest, int column, int n1, int n2, int k[], allcombi &result);
private:
allcombi m_data;
};
提前致谢
伊格纳西奥
答案 0 :(得分:16)
似乎libcxcore.a
和combination.o
使用不同的符号可见性选项进行编译。
了解符号可见性there。
所以,我想你只需要用combination.cpp
标志编译-fvisibility=default
。如果使用XCode,请在“GCC - 代码生成”部分中选中“默认隐藏的符号”设置。两个项目都应该取消选中。