Использую сишную библиотеку libxnee в проекте C++
Создаю класс обертки xnee_wrapper.
Подключаю хедеры в xnee_wrapper.h (перед всеми остальными хедерами)
extern"C"{
#include"libxnee/print.h"#include"libxnee/xnee.h"#include"libxnee/xnee_record.h"#include"libxnee/xnee_grab.h"#include"libxnee/xnee_alloc.h"#include"libxnee/xnee_replay.h"#include"libxnee/xnee_setget.h"#include"libxnee/xnee_fake.h"#include"libxnee/xnee_error.h"#include"libxnee/xnee_session.h"
}
#include <map>
#include <string>
class xnee_wrapper{
...
Здравствуйте, kpcb, Вы писали:
K>Здравствуйте, cpp_beginner, Вы писали:
_>>Использую сишную библиотеку libxnee в проекте C++ _>>Создаю класс обертки xnee_wrapper. _>>Подключаю хедеры в xnee_wrapper.h (перед всеми остальными хедерами) _>>[ccode] _>>extern "C"{ _>>#include "libxnee/print.h" _>>#include "libxnee/xnee.h" _>>#include "libxnee/xnee_record.h" _>>#include "libxnee/xnee_grab.h" _>>#include "libxnee/xnee_alloc.h" _>>#include "libxnee/xnee_replay.h" _>>#include "libxnee/xnee_setget.h" _>>#include "libxnee/xnee_fake.h" _>>#include "libxnee/xnee_error.h" _>>#include "libxnee/xnee_session.h" _>>}
K>Посмотри, тебе точно надо включать _все_ хидеры, которые ты перечислил? Там скорее всего есть один-два которые надо оставить, а остальные убрать.
Точно все. На редкость бестолковая библиотека, API разбросан по куче хедеров непонятно по какому признаку.
Здравствуйте, cpp_beginner, Вы писали:
_>Использую сишную библиотеку libxnee в проекте C++
_>Ругается на multiple definition
Странная у вас библиотека.
Вот фрагмент кода из xnee_internal.h
то есть тут определяется переменная xnee_data_types
сколько раз вы включите этот хедер — столько раз и будет определена эта переменная.
Отмечу, что так сделано для многих енумов и ни имя типа енума ни имя переменной не используют в коде (только константы из енмуа)
Зачем так делают — я не знаю. Не спец по сям =\ Подозреваю, что хотели сделать typedef.
Здравствуйте, uzhas, Вы писали:
U>то есть тут определяется переменная xnee_data_types U>сколько раз вы включите этот хедер — столько раз и будет определена эта переменная. U>Отмечу, что так сделано для многих енумов и ни имя типа енума ни имя переменной не используют в коде (только константы из енмуа) U>Зачем так делают — я не знаю. Не спец по сям =\ Подозреваю, что хотели сделать typedef.
Да, разобрался почему. Но пока непонятно как с этим бороться.
Понятно, можно включить сишные хедеры в единственном месте...