2012-01-04 3 views
0

Я пытаюсь скомпилировать пакет, который я получил отсюда: http://sourceforge.net/projects/desr/Почему я не могу скомпилировать следующее?

на MacOSX с SDK 10.6 или 10.7 (у меня есть оба/Разработчик).

я получаю следующие ошибки:

g++ -g -O2 -I. -I.. -I../ixe -c charmap.cpp 
g++ -g -O2 -I. -I.. -I../ixe -c HtmlTokenizer.cpp 
In file included from /usr/include/c++/4.2.1/iosfwd:45, 
      from /usr/include/c++/4.2.1/bits/stl_algobase.h:70, 
      from /usr/include/c++/4.2.1/bits/char_traits.h:46, 
      from /usr/include/c++/4.2.1/string:47, 
      from ./Char.h:30, 
      from ./string.h:27, 
      from /usr/include/c++/4.2.1/cstring:52, 
      from HtmlTokenizer.cpp:24: 
/usr/include/c++/4.2.1/bits/c++locale.h: In function ‘int std::__convert_from_v(int* const&, char*, int, const char*, ...)’: 
/usr/include/c++/4.2.1/bits/c++locale.h:69: error: ‘strcmp’ is not a member of ‘std’ 
/usr/include/c++/4.2.1/bits/c++locale.h:71: error: ‘strlen’ is not a member of ‘std’ 
/usr/include/c++/4.2.1/bits/c++locale.h:72: error: ‘strcpy’ is not a member of ‘std’ 

Я читал об этом в Интернете, и кажется, что ни одна из причин, указанных в других форумах по этой причине в этом случае (например, отсутствующий «CString "включить или включить внутри определения пространства имен).

Я знаю, что я скомпилировал этот пакет на Linux, поэтому я думаю, что либо установка Mac OSX xcode нарушена (??), либо xcode чувствительна к некоторой ошибке в этом пакете, в которой нет среды Linux.

Любые идеи?

+0

Пропустите '-Wall', чтобы получить все предупреждения и' -H', чтобы получить включенные заголовки, 'gcc'. И я не уверен, что существует 'std :: strcmp' (кроме самого последнего стандарта C++ 11). –

+1

, когда вы смотрите /usr/include/c++/4.2.1/cstring, вы видите, что он переопределяет strcmp и другие функции из string.h, чтобы быть в среде std, поэтому он должен * существовать. – kloop

ответ

1

Местный файл include "string.h" маскирует систему <string.h>. Как правило, это вызвано проектами, для которых требуется чувствительная к регистру FS, и использовать имена файлов, такие как String.h, который сталкивается с системой на нечувствительных к регистру FS (это по умолчанию используется для OS X).

Если проблема действительно нечувствительна к регистру, вы можете либо a) исправить проект, чтобы не использовать такие глупые имена, либо b) создать образ диска, отформатированный с помощью HFS + с учетом регистра и скомпилировать проект там.

Смежные вопросы