Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Из Windows в *nix

Крис Касперски ака мыщъх

Спецвыпуск: Хакер, номер #051, стр. 051-086-3


В крайнем случае можно воспользоваться полноценным эмулятором PC – VMWare или Win4Lin, однако полезность этого решения сомнительна. Дело даже не в аппаратных требованиях (я вполне успешно гоняю VMWare на P-III 733), а в удобстве использования (точнее, его отсутствии). Достаточно сказать, что обмениваться данными с эмулятором придется через виртуальную локальную сеть, гоняя их в обе стороны, в хвост и в гриву.

Перенос приложений, созданных в Microsoft Visual Studio

Компания Mainsoft (та самая, у которой свистнули исходные тексты Windows 2000) выпустила замечательный продукт Visual MainWin, позволяющий писать код в Microsoft Visual Studio и тут же компилировать его под разные платформы (Windows, Linux, HP-UP, AXI, Solaris), причем количество поддерживаемых платформ постоянно растет.

Пакет состоит из нескольких частей – это и инспектор кода, позволяющий обнаружить системно-зависимые участки (пускай программист сам решает, как он будет их исправлять!), и препроцессор, подготавливающий исходный код к последующей трансляции GCC (или любым другим *nix-компилятором), и, конечно же, обширная библиотека функций, реализующая: а) Windows-примитивы (SEH, DLL, процессы/потоки, средства их синхронизации, реестр, буфер обмена и поддержку национальных языков); б) графический и пользовательский интерфейс (GDI32, USER32); в) COM-модель (ActiveX, OLE, MIDL, DCOM); г) библиотеку времени исполнения (ALT, MFC, C Runtime library). Полный перечень на www.mainsoft.com/solutions/vmw5_wp.html.

Это коммерческий продукт, причем очень коммерческий (лицензия на одного разработчика стоит больше $ 2000), правда, доступна 30-дневная полнофункциональная демо-версия. Так что решай сам: нужно оно тебе или нет.

MainWin, конечно, мощная штука, но иногда требуется приложение помельче. Основной камень преткновения – это, конечно же, MFC. В Microsoft Visual Studio все визуальные средства разработки построены именно на нем. И хотя исходные тексты MFC доступны, перенести его на *nix-системы намного сложнее, чем создать с нуля, сохранив иерархию классов и прототипы функций.

wxWindows – это бесплатная библиотека, практически полностью совместимая с MFC и работающая во всех *nix-системах, где есть GTK+, Motif или его бесплатный клон Lesstif. Единственное отличие заключается в том, что вместо префикса "C" здесь используется "wx", в результате чего CWnd превращается в wxWnd. Некоторые классы еще не реализованы (например, отсутствует CEditView), а когда они появятся – неизвестно. Это, конечно, неприятно, но и не смертельно. Без недостающих классов можно как-нибудь обойтись, заменив CEditVIew на wxTextCtrl, а операцию "перебивки" префиксов загнать в препроцессор или повесить на макрос. Самое главное – wxWindows прекрасно работает на Windows, а значит, один проект не распадется на два!

Назад на стр. 051-086-2  Содержание  Вперед на стр. 051-086-4