Я пытаюсь интегрировать jsoncpp в проект. Моя платформа — 32-разрядная версия xubuntu с gcc версии 4.7.2. Я попытался использовать пакет debian, также сборку из последних источников jsoncpp, оба результата привели к одной и той же проблеме.
Я использовал CMake для своих сборок. Включает jsoncpp и библиотека успешно найдена. Но когда я добавляю включения в мой CMake include, сборка моего пустого класса brConfig (который содержит только один #include в строке 51) завершается неудачно со следующей ошибкой:
[100%] Building CXX object CMakeFiles/brCore.dir/src/brConfig.cpp.o
In file included from /usr/include/c++/4.7/i686-linux-gnu/bits/c++config.h:414:0,
from /usr/include/c++/4.7/string:40,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/include/brCore/brConfig.h:51,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/src/brConfig.cpp:25:
/usr/include/c++/4.7/i686-linux-gnu/bits/os_defines.h:45:19: Fehler: fehlender binärer Operator vor Token »(«
In file included from /usr/include/c++/4.7/cwchar:46:0,
from /usr/include/c++/4.7/bits/postypes.h:42,
from /usr/include/c++/4.7/bits/char_traits.h:42,
from /usr/include/c++/4.7/string:42,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/include/brCore/brConfig.h:51,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/src/brConfig.cpp:25:
/usr/include/wchar.h:75:43: Fehler: fehlender binärer Operator vor Token »(«
In file included from /usr/include/sched.h:43:0,
from /usr/include/pthread.h:25,
from /usr/include/c++/4.7/i686-linux-gnu/bits/gthr-default.h:41,
from /usr/include/c++/4.7/i686-linux-gnu/bits/gthr.h:150,
from /usr/include/c++/4.7/ext/atomicity.h:34,
from /usr/include/c++/4.7/bits/basic_string.h:41,
from /usr/include/c++/4.7/string:54,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/include/brCore/brConfig.h:51,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/src/brConfig.cpp:25:
/usr/include/i386-linux-gnu/bits/sched.h:133:20: Fehler: fehlender binärer Operator vor Token »(«
/usr/include/i386-linux-gnu/bits/sched.h:171:20: Fehler: fehlender binärer Operator vor Token »(«
In file included from /usr/include/c++/4.7/cwchar:46:0,
from /usr/include/c++/4.7/bits/postypes.h:42,
from /usr/include/c++/4.7/bits/char_traits.h:42,
from /usr/include/c++/4.7/string:42,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/include/brCore/brConfig.h:51,
from /home/hellhound/Repository/binrevengine/modules/brCore/trunk/src/brConfig.cpp:25:
/usr/include/wchar.h:104:1: Fehler: »__BEGIN_NAMESPACE_C99« bezeichnet keinen Typ /usr/include/wchar.h:107:1: Fehler: »__END_NAMESPACE_C99« bezeichnet keinen Typ /usr/include/wchar.h:135:1: Fehler: »__END_NAMESPACE_STD« bezeichnet keinen Typ /usr/include/wchar.h:149:6: Fehler: expected initializer before »__THROW« /usr/include/wchar.h:153:39: Fehler: expected initializer
[...]
Мне кажется, что проблема вызывается std :: string include.
Есть идеи, что не так?
Вот мой простой класс:
#ifndef BINREV_CONFIG_H__
#define BINREV_CONFIG_H__
#include <string> // compile fails here if I add JSON includes to CMAKE
namespace binrev{
namespace brCore{
class CORE_LIBRARY_API brConfig
{
public:
brConfig();
virtual ~brConfig();
};
}//ns-brCore
}//ns-binrev
#endif //BINREV_CONFIG_H__
Задача ещё не решена.
Других решений пока нет …