Russian Qt Forum
Ноябрь 24, 2024, 19:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Мониторинг (hotplug) устройств в *.nix  (Прочитано 3573 раз)
mevn
Гость
« : Май 12, 2012, 13:18 »

   Добрый день.
В программировании в QT я новичок. Столкнулся с проблемой идентичной проблеме изложенной в http://www.prog.org.ru/topic_12321_0.html
Не подскажете как слинковать проект с  libudev?
Немного уточню вопрос
Имеется шаред библиотека в которой есть класс который использует udev. При компиляции библиотеки ошибок нет. Но при подключении этой библиотеки к приложению и компиляции приложения вылезают такие ошибки:
Цитировать
../release/libqserialdevicewatcher.so: undefined reference to `udev_monitor_enable_receiving'
../release/libqserialdevicewatcher.so: undefined reference to `udev_monitor_get_fd'
../release/libqserialdevicewatcher.so: undefined reference to `udev_monitor_new_from_netlink'
../release/libqserialdevicewatcher.so: undefined reference to `udev_new'

Вопрос: как нужно правильно оформлять библиотеку, чтобы не ругалось Си-шные функции ?
Еще раз перефразирую вопрос.
Ситуация следующая:
Библиотеку и приложения писал не я.
В сентябре все компилировалось (по словам разработчиков).
Пришел, мягко говоря с нуля, так получилось (все уволились меня перевели на новое место, раньше программировал контроллеры) теперь я один.
Компилирую файлы через Eclipse indigо. На том же компе, где приложения писались. В проекте используется около 4 приложений. Только в одном выскакивает подобное сообщение. Под виндой все проходит на ура.
Подскажите хотя бы откуда начать искать. Разработчики посоветовали переустановить udev. Не помогло.
« Последнее редактирование: Май 13, 2012, 11:14 от mevn » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Май 12, 2012, 19:58 »

В том же топике и был ответ...

1. Подключаем через
Код
C++ (Qt)
extern "C"
{
#include <libudev.h>
};
 
2. Линкуем так:
Цитировать
LIBS += -ludev


Что непонятно то?
Записан

ArchLinux x86_64 / Win10 64 bit
mevn
Гость
« Ответ #2 : Май 13, 2012, 05:02 »

добрый день.
Спасибо за ответ.
Сишных файлов штук 50. В каждом файле добавлять эти строки? Причем раньше (примерно пол года назад приложение компилилось без проблем.
Записан
mevn
Гость
« Ответ #3 : Май 14, 2012, 07:49 »

Линкование помогло (добавление строки).
Однако, остался вопрос, как программа компилировалась раньше без этого???
Записан
gogi
Гость
« Ответ #4 : Май 14, 2012, 07:53 »

Однако, остался вопрос, как программа компилировалась раньше без этого???

Ну ты же наверное обновлялся? Компилятор и/или библиотеки немного изменились.
Записан
mevn
Гость
« Ответ #5 : Май 14, 2012, 09:21 »

В том, то и дело. Я не обновлялся. У меня нет доступа к инету с той машины. Хотя обновлялся предыдущий пользователь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 22.