wxWidgets dll

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Tkachov
In need of some credit
In need of some credit
Posts: 4
Joined: Fri Jan 20, 2012 3:05 pm

wxWidgets dll

Post by Tkachov »

Всем привет.

Пробую wxWidgets. В Code::Blocks создал проект, набросал кнопочек в визуальном редакторе, написал пару функций, тестировал через Build&Run - всё запускается и работает как надо. Запустил скомпилированный exe'шник не через среду. Сразу стал ругаться на отсутствие dll'ок.
(Понятно, конечно, что когда из среды запускалось, оно использовало путь к ним, а из других папок тот путь оно знать не знает.)

Сам exe'шник весит 0.5 МБ. Первая dll, которую он потребовал - 1.5 МБ. Скинул, он попросил ещё одну. И тут стало понятно, что если он мне так будет dll'ки просить, то к программе нужно будет прикладывать ещё дофига файлов, которые весят в десятки больше самого exe.

Так вот. wxWidgets на самом деле требует дофига dll'ок для простейшей программки или что-то работает не так? Фактически, я делаю просто windows forms приложение, с такими стандартными кнопочками и всё вроде бы родное должно использоваться.

_______________

Ещё пробовал создавать проект, в начальных настройках которого отключал галочку Use wxWidgets DLL. Тогда, во-первых, компилировался exe'шник в 25 МБ, а, во-вторых, через несколько мгновений компилятор выдаёт дофига ошибок в стиле "undefined reference to `jpeg std error`" (и это для дефолтного проекта, в котором используется только две кнопки и лейбл).

Таким образом, у меня довольно сомнительный выбор: скомпилировать в 0.5 МБ и таскать дофига dll'ок (exe'шник, в принципе, работает в папке с dll'ками wxWidgets, только вот папка на 489 МБ) или же exe'шник 25 МБ, только там ещё надо разобраться, почему он пытатется использовать ненужные dll.

Собственно, "так и должно быть" или же что-то можно исправить?
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: wxWidgets dll

Post by Mojo »

Нужно собрать wxWidgets для статической линковки и не монолитно.

http://wiki.codeblocks.org/index.php?ti ... wsQuickRef


http://wiki.codeblocks.org/index.php?ti ... ocks_(MSW)


У меня минимальное приложение с парой кнопок, весит 450-500 килов, без всяких зависимостей, правда собирал в вижуал с++ экспресс 2010 и потом еще упиксил.

Но если даже компилировать и в MinGW/GCC то разница будет килобайтов 30 - 50....

http://forums.wxwidgets.org/viewtopic.php?f=19&t=4403
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Tkachov
In need of some credit
In need of some credit
Posts: 4
Joined: Fri Jan 20, 2012 3:05 pm

Re: wxWidgets dll

Post by Tkachov »

Ну, я использовал wxPack, чтобы не компилировать самому.

Для уменьшения веса, как я понял, нужно сделать следующее:
1. Скомпилировать wxWidgets самому. Статично, немонолитно, BUILD=release.
2. Использовать компилятор VC++ (и лучше с флагом "/Os").
3. Скомпилированный exe'шник, если нужно, пропустить через strip.exe и upx.exe.

Сейчас буду компилировать wxWidgets, отпишусь, если ещё вопросы будут.

_____________________

UPD: скомпилировал только через MinGW, VC++ вылетел и скомпилировать не смог. Таким образом, у меня только MinGW находит подходящую Release-конфигурацию. Стандартный проект, опять же, требует jpeg и tiff, если добавить их - компилируется в 2.41 МБ, upx сжимает до 700 КБ.

Но, во-первых, как-то не хочется ненужные библиотеки для jpeg и tiff добавлять, а, во-вторых, проект, который мне осталось только скомпилировать, выдаёт почти 700 ошибок вроде "undefined reference to `_imp___ZN16wxEventHashTableD1Ev'".

Потому вопрос: как отучить его просить ненужное (в wiki-странице по компиляции wxWidgets есть примечание, что если есть проблемы с jpeglib, то вот есть ссылка на patch-файл, но он для 2.6, да и непонятно, что с ним делать) и что может быть не так в скомпилированном проекте? (настройки билда я вроде все изменил на соответствующие - #defines в настройках компилятора; линкеру изменил имена библиотек; папки, в которых искать, задал нужные)
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7477
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets dll

Post by ONEEYEMAN »

Доброго времени суток.
1. В какой версии VC Вы пробовали сборку? И что значит "вылетел"?
2. Какая версия wx? Какая операционка? Виртуальная машина или реальная машина?
3. Для того чтобы скомпилировать wxWidgets под Visual Studio:

a) запустить IDE
b) открыть проект <wx>/build/msw/wx_vc<n>.sln, где n - версия Visual Studio.
c) модифицировать файл wx/include/msw/setup.h под свои нужды
d) запустить билд.

4. Для того чтобы скомпилировать библиотеку с помощью MinGW нужно установить Unix-like среду и
дальше воспользоваться описанием из файла BuildMSW.txt

Спасибо.
Tkachov
In need of some credit
In need of some credit
Posts: 4
Joined: Fri Jan 20, 2012 3:05 pm

Re: wxWidgets dll

Post by Tkachov »

Привет.

Я решил пока не работать с wxWidgets, но всё равно отвечу на вопросы:

1. У меня 9.0 (9.00.30729.01, если быть точным). "Вылетел" значит выкинул APPCRASH ("Прекращена работа Microsoft C/C++ Compiler Driver" и всё в этом духе). Для компиляции открывал командную строку и вызывал nmake (собственно, по инструкции на вики-странице Code::Blocks).
2. Судя по названию архива, 2.8.12. Win Vista, реальная машина.
3. Забавно, что в архиве не было ни одного .sln (нашёлся .dsw; определяется как VC++ 6 Workspace; открывается MSVC как решение) и setup.h немного по другому пути находится (а ещё выглядит как облако тегов; нет переносов строк, поэтому я оставил его как есть). Так или иначе, я запустил его на компиляцию и оно собирается. Собралось, но Code::Blocks не находит подходящие конфигурации (хотя вроде параметры все верно выбрал).
4. Ну "Minimalist GNU for Windows" же. Такой же компилятор, только на винде.

Не за что. =)
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7477
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets dll

Post by ONEEYEMAN »

Доброго времени суток,
Tkachov wrote: Привет.

Я решил пока не работать с wxWidgets, но всё равно отвечу на вопросы:
Зря. :D
Tkachov wrote: 1. У меня 9.0 (9.00.30729.01, если быть точным). "Вылетел" значит выкинул APPCRASH ("Прекращена работа Microsoft C/C++ Compiler Driver" и всё в этом духе). Для компиляции открывал командную строку и вызывал nmake (собственно, по инструкции на вики-странице Code::Blocks).
Это что - КодБлок? Все можно и напрямую с VS собирать...
Кстати, а какая версия VC?
Tkachov wrote: 2. Судя по названию архива, 2.8.12. Win Vista, реальная машина.
3. Забавно, что в архиве не было ни одного .sln (нашёлся .dsw; определяется как VC++ 6 Workspace; открывается MSVC как решение) и setup.h немного по другому пути находится (а ещё выглядит как облако тегов; нет переносов строк, поэтому я оставил его как есть). Так или иначе, я запустил его на компиляцию и оно собирается. Собралось, но Code::Blocks не находит подходящие конфигурации (хотя вроде параметры все верно выбрал).
Это интересно. Проэкты и солюшки должны находиться в директории wx/build/msw (.dsw/.dsp.sln).
Судя по ответу 1 использовался VS а по ответу 3 - MinGW.
Я бы сделал вот что.

1, Распаковал архив. (Кстати если уж изучать - то брать 2,9 версию)
2, Запустил Visual Studio (no Code::Blocks).
3. В каталоге wx/include/wx/msw отредактировал файл setup.h.
4. В Visual Studio открыл решение/воркспаейс wx_vc<n> из wx/build/msw
5. Build->Batch Build.
Tkachov wrote: 4. Ну "Minimalist GNU for Windows" же. Такой же компилятор, только на винде.

Не за что. =)
Кстати не секрет что MinGW уступает VS в кодогенерации.

Так все таки какой компилятор использовался.

Спасибо.
Tkachov
In need of some credit
In need of some credit
Posts: 4
Joined: Fri Jan 20, 2012 3:05 pm

Re: wxWidgets dll

Post by Tkachov »

Code::Blocks - это IDE.

Когда я задавал здесь вопросы, я компилировал wxWidgets с MinGW.
Вчера я открыл в MSVC++ 9.0 Express Edition .dsw из папки <wx>/build/msw и вроде бы оно скомпилировалось нормально (кстати, в ответе 3 я тоже имел ввиду компиляцию с использованием VC++-компилятора, как и в ответе 1).

Если честно, мне просто показался неудобным MSVC++, а Code::Blocks шустрый и ничего лишнего в нём нет. А как дефолтный к Code::Blocks идёт MinGW, поэтому я его и выбрал. Выбирать любой другой установленный компилятор можно в настройках, так что я могу выбрать VC++-компилятор.
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: wxWidgets dll

Post by borr_1 »

у кодеблокс все очень плохо с кодекомлетионом (автоподстановкой кода).
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: wxWidgets dll

Post by SteelRat »

Очень не люблю DLL. Потому что кроме лишних файлов с проектом надо ещё пользователя заставлять качать всякие redistributable и ещё и ещё - меня это бесит. Поэтому сам использую wxWidgets как статик билд всегда. Экзешник от майкрософтовского компилятора - 3мб минимум. GCC выдаёт минимум 6 мб. Можно уменьшить и тот и другой, но меня не беспокоит. Это не 50мб от известно кого и не надо парить пользователя установкой всякой херни.
Win7/LinuxMint 17, VS2013/C::B, wxWidgets 3.0 x64
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: wxWidgets dll

Post by Mojo »

SteelRat wrote:Очень не люблю DLL. Потому что кроме лишних файлов с проектом надо ещё пользователя заставлять качать всякие redistributable и ещё и ещё - меня это бесит. Поэтому сам использую wxWidgets как статик билд всегда. Экзешник от майкрософтовского компилятора - 3мб минимум. GCC выдаёт минимум 6 мб. Можно уменьшить и тот и другой, но меня не беспокоит. Это не 50мб от известно кого и не надо парить пользователя установкой всякой херни.
3 мега??? :shock: :shock: Это очень много, у меня пример minimal из каталога samples Visual C++ 2008 EE выдает 1.28 мб до упикса, после упикса это же приложение весит 418 килов и все это при статической линковке, ежель есть сомнения, то вот проект, экзешник весом 418 кб находится там внутри, можете посмотреть настройки проекта и перекомпилировать еще раз.
Attachments
MinimalDemo.7z
(437.49 KiB) Downloaded 349 times
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: wxWidgets dll

Post by SteelRat »

Так у тебя там и функционала нет. И вхвиджетс 2.8. А у меня сразу AUI Manager, битмапы, логгер и ещё всякого. И версия 2.9.4.
Win7/LinuxMint 17, VS2013/C::B, wxWidgets 3.0 x64
Post Reply