Предупреждение: XXXX имеет различную видимость (по умолчанию) в ГГГГ и (скрыт) в ZZZZ

Я пытаюсь создать приложение для iPhone, которое использует OpenCV плюс другую библиотеку С++. Кажется, он компилирует и связывает штраф. Это действительно работает. Я просто хочу избавиться от этого уродливого предупреждения:

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

Кажется, что libcxcore.a и combination.o скомпилированы с различными вариантами видимости символов.

Читайте о видимости символа там.

Итак, я думаю, вам просто нужно скомпилировать combination.cpp с флагом -fvisibility=default. Если вы используете XCode, установите флажок "Symbols Hidden by Default" в разделе "GCC - Code Generation". Он должен быть отключен для обоих проектов.

alt text