Page 1 of 1

DLL on wxWidgets

Posted: Wed Mar 05, 2008 9:00 am
by teolog
Какое то время назад пытался написать библиотечку использующую wxWidgets которая должна была работать отдновременно с программами использующими и не использующими wxWidgets, в Debug и Release вариантах. После долгого шаманства и копания по форумам дело кончилось добавлением функции InitWidgets которую главная софтина вызывает только если сама виджеты не использует. Однако проблема с несоответствием режимов сборки осталась.
Может кто нибудь знает нормальный переносимый способ самоинециализации библиотеки так чтобы она ни счем не конфликтовала и в ней нормально работали UDP и TCP/IP сокеты.
По сей день в синхронном режиме в библиотеке по-человечески не работают, пришлось писать собственные.

Re: DLL on wxWidgets

Posted: Wed Mar 05, 2008 9:18 am
by tan
Привет,
teolog wrote:Какое то время назад пытался написать библиотечку использующую wxWidgets которая должна была работать отдновременно с программами использующими и не использующими wxWidgets, в Debug и Release вариантах. После долгого шаманства и копания по форумам дело кончилось добавлением функции InitWidgets которую главная софтина вызывает только если сама виджеты не использует. Однако проблема с несоответствием режимов сборки осталась.
Ну тут еще важное значение имеет какой способ линковки wx библиотеки используется (dll or static). А также всякие другие тонкости (особенно если сам exe виджетами не пользуется), ну к примеру, один или несколько wx dll-ек будет при этом юзаться. В общем, для нетривиальных конфигураций (а тривиальная реально только одна - exe и dll-ки юзают wx и wx библиотеки везде линкуются динамически, в этом случае у меня никогда проблем не возникало) приходится шаманить :)
teolog wrote: Может кто нибудь знает нормальный переносимый способ самоинециализации библиотеки так чтобы она ни счем не конфликтовала и в ней нормально работали UDP и TCP/IP сокеты.
Все-таки, хотелось бы знать, для какой конфигурации? Если речь идет о любом возможном сочетании, то, я такого решения пока не знаю :) (да просто и не приходилось с таким сталкиваться), возможно, такого решения просто нет :)

Re: DLL on wxWidgets

Posted: Fri Mar 14, 2008 9:33 am
by teolog
tan wrote:Привет,
Ну тут еще важное значение имеет какой способ линковки wx библиотеки используется (dll or static). А также всякие другие тонкости (особенно если сам exe виджетами не пользуется), ну к примеру, один или несколько wx dll-ек будет при этом юзаться. В общем, для нетривиальных конфигураций (а тривиальная реально только одна - exe и dll-ки юзают wx и wx библиотеки везде линкуются динамически, в этом случае у меня никогда проблем не возникало) приходится шаманить :)
Все-таки, хотелось бы знать, для какой конфигурации? Если речь идет о любом возможном сочетании, то, я такого решения пока не знаю :) (да просто и не приходилось с таким сталкиваться), возможно, такого решения просто нет :)
Сочитание простое wxWidgets в dll.
Библиотечка тоже dll.

Программы либо не используют виджетов вообще, либо только те-же с таким же способом линковки. Библиотечка на всех одна и способа узнать кто её поднимает нет.

Posted: Sat Mar 22, 2008 3:08 am
by ONEEYEMAN
Привет,
Насчет TCP/IP/UDP не знаю но у меня работает GUI-библиотека в M$W/*nix на wx которая вызывается из wx-приложения (тоже GUI).

Все работает как часы... :)

Posted: Tue Mar 25, 2008 11:49 am
by teolog
ONEEYEMAN wrote:Привет,
Насчет TCP/IP/UDP не знаю но у меня работает GUI-библиотека в M$W/*nix на wx которая вызывается из wx-приложения (тоже GUI).

Все работает как часы... :)
Из wx-приложения все всегда пашет как часы- инициализация в основном модуле. тут трабла в том что должно работать в обоих случаях.

Posted: Tue Mar 25, 2008 2:02 pm
by ONEEYEMAN
teolog,
Несколько вопросов
1. На код инициализации библиотеки можно глянуть
2. Для какой системы писалось
3. Версия wx
4. Кто вызывает библиотеку - на чем написано

Спасибо.

Posted: Wed Mar 26, 2008 7:34 am
by tan
Привет.
teolog wrote: Из wx-приложения все всегда пашет как часы- инициализация в основном модуле. тут трабла в том что должно работать в обоих случаях.
Я тут подумал, что в таком варианте надо делать DLL статическм слинкованной с wx библиотекой, тогда у тебя в любом случае в ней будет своя собственная копия библиотеки. Инициалиализируй ее в dll и все должно работать, независимо от того откуда это вызвано. В этом случае, конечно, будут определенные ограничения, но, поскольку, это предполагается использовать и в wx и не wx это не должно быть проблемой.