LINUX.ORG.RU

Маководы, нид хелп, компиляция падает с ошибкой

 , , ,


0

1

Есть некоторое опенсорсное приложение, которое нужно собрать под маком. При компиляции оно падает с ошибкой. Хотя раньше этот код у других достоверно собирался. Возможно на другой версии макоси. Я собираю под 10.8

Building CXX object CMakeFiles/bluecherry-client.dir/src/ui/StatusBandwidthWidget_mac.mm.o
In file included from /Users/user/bluecherry/bluecherry-client-scripts/package/bluecherry-client-2.1.4/src/ui/StatusBandwidthWidget_mac.mm:18:
/Users/user/bluecherry/bluecherry-client-scripts/package/bluecherry-client-2.1.4/src/ui/StatusBandwidthWidget.h:44:7: error: 
      redefinition of 'NSPopUpButton' as different kind of symbol
class NSPopUpButton;
      ^
/System/Library/Frameworks/AppKit.framework/Headers/NSPopUpButton.h:14:12: note: previous definition is here
@interface NSPopUpButton : NSButton {
           ^
1 error generated.
make[2]: *** [CMakeFiles/bluecherry-client.dir/src/ui/StatusBandwidthWidget_mac.mm.o] Error 1

Сам код можно посмотреть здесь

https://github.com/vogel/bluecherry-client/blob/master/src/ui/StatusBandwidth...

https://github.com/vogel/bluecherry-client/blob/master/src/ui/StatusBandwidth...

Насколько я понял, суть в том, что компилятору не нравится, что маковский виджет NSButton объявляется как «class NSPopUpButton;» в заголовочном файле. Этот файл инклюдится как в C++ файлы, так и в ObjectiveC, так что он должен быть корректным с точки зрения С++ тоже. Как это можно побороть? obj-c не знаю, особенности макопрограммирования тоже не особо, линукс тут при том, что разработка ведётся под ним

★★★★★

разработка ведётся под ним

Разработка чего? Что за компилятор, которым собираешь? Имхо, намешал ты кода от балды...

menangen ★★★★★
()
Ответ на: комментарий от menangen

Разработка чего?

приложения

Что за компилятор, которым собираешь?

/usr/bin/c++ --version
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.0.0
Thread model: posix

Хм, а я думал, что GCC. В общем то, что у XCode по дефолту

Имхо, намешал ты кода от балды...

Код не мой, я его только компилирую

Harald ★★★★★
() автор топика

Переименовать свой класс во что-то, что не конфликтует с классами в стандартном SDK.

Deleted
()

Код не смотрел, но судя по ошибке, как сказали выше — конфликт имен: в Objective C нет нэймспэйсов, поэтому свои классы, а так же все глобальные имена нужно именовать с префиксом.

Oxdeadbeef ★★★
()

Так же - «Occasional support can be found on irc.bluecherry.net/bluecherry»

robot12 ★★★★★
()
Ответ на: комментарий от EXL

да, шлангом

попробую переключить на gcc, возможно он этот код переваривал

Harald ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.