Предупреждение: 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
</int*,></int,>

Что это значит?, Как я могу его решить?

на всякий случай, это заголовок класса комбинации из упомянутой библиотеки.

//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;
};
</int>

Заранее спасибо

Игнасио

1 ответ

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

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

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

licensed under cc by-sa 3.0 with attribution.