Название: QtDBus - избитая тема? Отправлено: Bepec от Сентябрь 10, 2012, 10:05 Приветствую знатоков :)
Вопрос: возможно ли собрать и использовать QtDBus под windows? Как? PS1: Да, я видел тему с сборкой под 2005 студию. Не получилось. Точнее собрать DBus получилось, но вот собрать проект использующий его - нет. PS2: Да, я смотрел примеры из example, да они не компилятся и неправильные по заверениям нашего же форума. PS3: Да, сам разобраться не смог, особенно с упоротостью Qt, который не видит QDBusAbstractAdaptor и прочие классы. (пути прописаны, но увы...) PS4: Прошу помощи ;) PPS Qt 4.7.2 (сменить низя), W7x64, руки. Буду рад маленькому примеру хотя бы создающего этот адаптерс... Название: Re: QtDBus - избитая тема? Отправлено: mutineer от Сентябрь 10, 2012, 10:19 Насколько я видел в интернетах реализация DBus под венды кривая, косая и не факт что работает...
Но в любом случае, ты DBus в винду поставил? Название: Re: QtDBus - избитая тема? Отправлено: xokc от Сентябрь 10, 2012, 13:04 Года два назад пробовал - локально всё работало, но забросил - ибо показалось геморройным. Как обстоит сейчас - не знаю.
Название: Re: QtDBus - избитая тема? Отправлено: Bepec от Сентябрь 10, 2012, 13:07 Собственно я почему соблазнился - возможность использовать службу и любое количество программ на 1 шине. :/
Видимо придётся на сокетах всё делать опять. Ибо действительно геморройное. PS DBus стоит, примеры qtшные бачат, но... Но блин они не собираются :D Т.е. бинарники работают, но код примеров какой то отстойно неправильный, на что оно и плюется. PPS я так понимаю, сокеты под винду - единственно нормальный вариант взаимодействия нескольких приложений? Название: Re: QtDBus - избитая тема? Отправлено: Serr500 от Сентябрь 10, 2012, 13:22 я так понимаю, сокеты под винду - единственно нормальный вариант взаимодействия нескольких приложений? Можно ещё посмотреть в сторону QSystemSemaphore и QSharedMemory. Но по-хорошему под виндой надо использовать [именованные] каналы ([named] pipe), которые, если не ошибаюсь, реализует QLocalSocket.Название: Re: QtDBus - избитая тема? Отправлено: Igors от Сентябрь 10, 2012, 13:29 Можно ещё посмотреть в сторону QSystemSemaphore и QSharedMemory. Но по-хорошему под виндой надо использовать [именованные] каналы ([named] pipe), которые, если не ошибаюсь, реализует QLocalSocket. QSystemSemaphore + QSharedMemory = хорошая рекомендация. Там часто той передачи с гулькин нос, чего запрягать кобылу (DBus или др)? Да и по скорости QSharedMemory первая Название: Re: QtDBus - избитая тема? Отправлено: Bepec от Сентябрь 10, 2012, 13:39 Меня прельщало в DBUS возможность связи с нескольких сессий, обёртка с сигналами и возможность подрубать скок угодно любых программ на шину :)
Посмотрю семафоры и шаред мемори, авось пойму что нибудь :) PS спасибо за ответы. Название: Re: QtDBus - избитая тема? Отправлено: Serr500 от Сентябрь 10, 2012, 18:52 Если ограничиться только виндой и требуется посылать сообщения нескольким приложениям, то, возможно, подойдут виндовые широковещательные сообщения. Например, SendMessage (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx) с hWnd=HWND_BROADCAST или BroadcastSystemMessage (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644932%28v=vs.85%29.aspx)
Название: Re: QtDBus - избитая тема? Отправлено: Bepec от Сентябрь 10, 2012, 19:03 Если честно хотелось кроссплатформенности :) Просто работаю % на 90 под виндой, но эти 10%...
Ну в общем понятно :) Название: Re: QtDBus - избитая тема? Отправлено: Igors от Сентябрь 10, 2012, 19:16 Если честно хотелось кроссплатформенности :) Просто работаю % на 90 под виндой, но эти 10%... Помнится потратил на это (семафор + шаред) дня полтора, никаких трудностей не испытал. Так то в нативняке и для 2-х платформ. На Qt должно быть полдня.Ну в общем понятно :) Техника простая: в каждом приложении заводите 2 семафора (имена привязываете к полному пути). На одном семафоре приложение ждет, другой сигналит. Шаред кусок делите на участки, чтобы между приложениями они не пересекались (так проще чем лочить). Ну вот собственно и все :) |