предупреждение: XXXX имеет различную видимость (по умолчанию) в YYYY и (скрыто) в ZZZZ - PullRequest
11 голосов
/ 04 декабря 2010

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

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 Ответ

16 голосов
/ 04 декабря 2010

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

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

Итак, я думаю, вам просто нужно скомпилировать combination.cpp с флагом -fvisibility=default.Если вы используете XCode, проверьте параметр «Символы, скрытые по умолчанию» в разделе «GCC - Генерация кода».Его следует отключить для обоих проектов.

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...