2015-02-11 2 views
1

Как устранить следующую ошибку компоновщика w.r.t jsoncpp operator =.Неопределенная ссылка в операторе jsoncpp =

создать Json::Value объект, как этот

Json::Value pt; 
pt["type"] = 5; 
pt["uuid"] = "f8c74622-d45e-4cfa-fe00-5e7042431c72"; 
pt["start frame"] = 10; 
pt["duration"] = 20; 
pt["payload"] = "aedddefffsadf"; 

Это дает следующее сообщение об ошибке компоновщика, когда я пытаюсь связать против libjsoncpp-разработчика по умолчанию поставляется с Ubuntu 14.04

неопределенная ссылка на `Json :: Значение :: operator = (Json :: Value) '

Дополнительная информация:

И я не получаю эту ошибку компоновщика при компиляции и связанной с последним jsoncpp из GitHub.

value.h (устанавливается убунту АПП) в/USR/включать/jsoncpp/JSON имеет

Value &operator=(const Value &other); 

и последние jsoncpp value.h имеет

Value &operator=(Value other); 
+0

Вы должны добавить теги 'C++' и 'C++ - 11' –

+0

добавили теги – satheeshram

+1

Как правило, вам нужно скомпилировать ту же версию файлов заголовков, что и версия библиотеки, с которой вы (в конечном итоге) хотите установить связь с , Если вы скомпилируете одну версию заголовков и ссылку с другой версией библиотеки, то, как правило, происходят плохие вещи. Если вы хотите иметь ссылку на libjsoncpp-dev по умолчанию из Ubuntu 14.04, обязательно используйте эти файлы заголовков. –

ответ

0

Debian поставляется с jsoncpp-0.6.0-rc2. Готов поспорить, Ubuntu тоже.

Просто переключитесь на jsoncpp-0.8.z, которые являются binary-compatible with 0.6.0-rc2 и содержат большинство нововведений и исправления ошибок от 1.y.z.

На самом деле Debian переключается на 0.8.z. Пока Ubuntu не обновит свою версию, вам, возможно, придется избегать новых функций (в основном, Builders) и вместо этого использовать устаревшие читатели/писатели, которые, вероятно, вы уже делаете. Так что вам будет легко все работать.

+0

Вы говорите, что это ошибка в 0.6.0-rc2? –

+0

Нет, не ошибка. Небиновое совместимое изменение было сделано в '1.y.z' (и' 0.7.z', случайно). Но '0.8.z' * * двоично-совместимо с' 0.6.0-rc2'. Изменение было для идиомы «копирование и своп», для эффективности, на самом деле не требуемой. – cdunn2001

+0

Итак, как OP обнаружил ошибку компоновщика только из «стандартного libjsoncpp-dev, поставляемого с Ubuntu 14.04»? –

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