警告:XXXX在YYYY中的可见性(默认)和在ZZZ中的可见性(隐藏)不同 我正在尝试使用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 ld:warning:std::vector::_M_insert_aux(__gnu_cxx::_normal_迭代器,int const&)在/Users/nacho4d/Documents/Projects/iOS/iAR/opencv\u device/lib/libcxcore.a(cxdatastructs.o)和/Users/nacho4d/Documents/Projects/iOS/iAR/build/iAR.build/Debug iphoneos/iAR.build/Objects normal/armv6/combition.o中具有不同的可见性(默认)

警告:XXXX在YYYY中的可见性(默认)和在ZZZ中的可见性(隐藏)不同 我正在尝试使用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 ld:warning:std::vector::_M_insert_aux(__gnu_cxx::_normal_迭代器,int const&)在/Users/nacho4d/Documents/Projects/iOS/iAR/opencv\u device/lib/libcxcore.a(cxdatastructs.o)和/Users/nacho4d/Documents/Projects/iOS/iAR/build/iAR.build/Debug iphoneos/iAR.build/Objects normal/armv6/combition.o中具有不同的可见性(默认),iphone,c++,opencv,Iphone,C++,Opencv,这是什么意思?我该怎么解决 以防万一,这是我提到的库中combination类的头 //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(); allc

这是什么意思?我该怎么解决

以防万一,这是我提到的库中combination类的头

//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;
};
//composition.h
typedef标准::向量组合;
typedef std::vectorallcombi;
阶级组合
{
公众:
void Init(常数int n,常数int m);
allcombi::迭代器begin();
allcombi::迭代器end();
常量迭代器begin()常量;
allcombi::const_迭代器end()const;
私人:
无效嵌套(int嵌套、int列、int n1、int n2、int k[],allcombi和result);
私人:
allcombi m_数据;
};
提前谢谢


Ignacio

似乎
libcxcore.a
组合.o
使用不同的符号可见性选项编译

了解有关符号可见性的信息

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


我很确定这是一个骗局。我尝试了35; pragma GCC visibility push(默认)类组合,但警告没有消失。我还检查了Xcode,“默认情况下隐藏的符号”未选中。我还有其他选择吗?(+1表示链接;))请稍候!。我只是尝试检查、编译和取消选中默认隐藏的符号,警告消失了!非常感谢;)当我在我的应用程序中使用funambol sdk时,它也适用于我。还必须选中然后取消选中“默认隐藏的符号”以消除警告。。。由于某些原因,目标和项目设置不匹配,而在目标级别未报告任何设置修改:/