警告:XXXX在YYYY中具有不同的可见性(默认),在ZZZZ中具有(隐藏)

时间:2010-12-04 09:45:50

标签: iphone c++ opencv

我正在尝试制作一个使用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;
};

提前致谢

伊格纳西奥

1 个答案:

答案 0 :(得分:16)

似乎libcxcore.acombination.o使用不同的符号可见性选项进行编译。

了解符号可见性there

所以,我想你只需要用combination.cpp标志编译-fvisibility=default。如果使用XCode,请在“GCC - 代码生成”部分中选中“默认隐藏的符号”设置。两个项目都应该取消选中。

alt text