Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Я.К. от Октябрь 09, 2008, 05:48



Название: Сборка Qt - очередные проблемы.
Отправлено: Я.К. от Октябрь 09, 2008, 05:48
Есть Qt 4.4.2 Commercial for VS2008.
Хочу пересобрать под VS2005.
захожу в Visual Studio Commant Prompt, засовываю туда configure.exe, прописываю ключи -platform win32-msvc2005 -debug-and-release.
Мне выкидывает следующее:

Код:
Core', object file assumed
cl : Command line warning D9027 : source file '8\VC\include\QtCore' ignored
cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft
', object file assumed
cl : Command line warning D9027 : source file 'Files\Microsoft' ignored
cl : Command line warning D9024 : unrecognized source file type 'Visual', object
 file assumed
cl : Command line warning D9027 : source file 'Visual' ignored
cl : Command line warning D9024 : unrecognized source file type 'Studio', object
 file assumed
cl : Command line warning D9027 : source file 'Studio' ignored
cl : Command line warning D9024 : unrecognized source file type '8\VC\src\coreli
b\global', object file assumed
cl : Command line warning D9027 : source file '8\VC\src\corelib\global' ignored
cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft
', object file assumed
cl : Command line warning D9027 : source file 'Files\Microsoft' ignored
cl : Command line warning D9024 : unrecognized source file type 'Visual', object
 file assumed
cl : Command line warning D9027 : source file 'Visual' ignored
cl : Command line warning D9024 : unrecognized source file type 'Studio', object
 file assumed
cl : Command line warning D9027 : source file 'Studio' ignored
cl : Command line warning D9024 : unrecognized source file type '8\VC\include\Qt
Script', object file assumed
cl : Command line warning D9027 : source file '8\VC\include\QtScript' ignored
project.cpp
c:\qt\4.4.2\qmake\project.h(37) : fatal error C1083: Cannot open include file: '
qscriptengine.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\c
l.EXE"' : return code '0x2'
Stop.

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

        del qbitarray.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qbitarray.o
bj
        del qbuffer.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qbuffer.obj

        del qcryptographichash.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qcryptograp
hichash.obj
        del qlinkedlist.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qlinkedlist
.obj
        del qfsfileengine.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qfsfileengi
ne.obj
        del qfsfileengine_iterator.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qfsfileengi
ne_iterator.obj
        del qbytearray.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qbytearray.
obj
        del qvsnprintf.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qvsnprintf.
obj
        del qbytearraymatcher.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qbytearraym
atcher.obj
        del qdatetime.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qdatetime.o
bj
        del qdir.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qdir.obj
        del qdiriterator.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qdiriterato
r.obj
        del qfile.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qfile.obj
        del qtemporaryfile.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qtemporaryf
ile.obj
        del qabstractfileengine.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qabstractfi
leengine.obj
        del qfsfileengine_win.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qfsfileengi
ne_win.obj
        del qfsfileengine_iterator_win.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qfsfileengi
ne_iterator_win.obj
        del qfileinfo.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qfileinfo.o
bj
        del qglobal.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qglobal.obj

        del qhash.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qhash.obj
        del qiodevice.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qiodevice.o
bj
        del qlistdata.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qlistdata.o
bj
        del qlocale.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qlocale.obj

        del qmalloc.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qmalloc.obj

        del qmap.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qmap.obj
        del qregexp.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qregexp.obj

        del qstring.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qstring.obj

        del qstringlist.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qstringlist
.obj
        del qtextstream.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qtextstream
.obj
        del qdatastream.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qdatastream
.obj
        del quuid.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\quuid.obj
        del qvector.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qvector.obj

        del qsettings.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qsettings.o
bj
        del qlibraryinfo.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qlibraryinf
o.obj
        del qvariant.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qvariant.ob
j
        del qurl.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qurl.obj
        del qsettings_win.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qsettings_w
in.obj
        del qmetatype.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qmetatype.o
bj
        del project.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\project.obj

        del main.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\main.obj
        del makefile.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\makefile.ob
j
        del unixmake.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\unixmake.ob
j
        del unixmake2.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\unixmake2.o
bj
        del mingw_make.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\mingw_make.
obj
        del option.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\option.obj
        del winmakefile.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\winmakefile
.obj
        del projectgenerator.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\projectgene
rator.obj
        del property.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\property.ob
j
        del meta.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\meta.obj
        del makefiledeps.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\makefiledep
s.obj
        del metamakefile.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\metamakefil
e.obj
        del xmloutput.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\xmloutput.o
bj
        del borland_bmake.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\borland_bma
ke.obj
        del msvc_nmake.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\msvc_nmake.
obj
        del msvc_dsp.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\msvc_dsp.ob
j
        del msvc_vcproj.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\msvc_vcproj
.obj
        del msvc_objectmodel.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\msvc_object
model.obj
        del pbuilder_pbx.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\pbuilder_pb
x.obj
        del qnumeric.obj  -del qscriptasm.obj  -del qscriptast.obj  -del qscript
astvisitor.obj  -del qscriptcompiler.obj  -del qscriptecmaarray.obj  -del qscrip
tecmaboolean.obj  -del qscriptecmacore.obj  -del qscriptecmadate.obj  -del qscri
ptecmafunction.obj  -del qscriptecmaglobal.obj  -del qscriptecmamath.obj  -del q
scriptecmanumber.obj  -del qscriptecmaobject.obj  -del qscriptecmaregexp.obj  -d
el qscriptecmastring.obj  -del qscriptecmaerror.obj  -del qscriptcontext_p.obj
-del qscriptengine.obj  -del qscriptengine_p.obj  -del qscriptengineagent.obj  -
del qscriptextenumeration.obj  -del qscriptextvariant.obj  -del qscriptcontext.o
bj  -del qscriptcontextinfo.obj  -del qscriptfunction.obj  -del qscriptgrammar.o
bj  -del qscriptlexer.obj  -del qscriptclassdata.obj  -del qscriptparser.obj  -d
el qscriptprettypretty.obj  -del qscriptsyntaxchecker.obj  -del qscriptclass.obj
  -del qscriptclasspropertyiterator.obj  -del qscriptstring.obj  -del qscriptval
ue.obj  -del qscriptvalueimpl.obj  -del qscriptvalueiterator.obj  -del qscriptva
lueiteratorimpl.obj
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qnumeric.ob
j
        del vc60.pdb
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\vc60.pdb
        del vc70.pdb
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\vc70.pdb
        del qmake.pdb
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qmake.pdb
        del qmake.ilk
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qmake.ilk
        del qmake.tds
Не удается найти C:\Program Files\Microsoft Visual Studio 8\VC\qmake\qmake.tds

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl -c -Foproject.obj  -W3 -nologo -O2  -I. -Igenerators -Igenerators\uni
x -Igenerators\win32 -Igenerators\mac  -IC:\Program Files\Microsoft Visual Studi
o 8\VC\include -IC:\Program Files\Microsoft Visual Studio 8\VC\include\QtCore  -
IC:\Qt\4.4.2\include -IC:\Qt\4.4.2\include\QtCore  -IC:\Program Files\Microsoft
Visual Studio 8\VC\src\corelib\global  -IC:\Program Files\Microsoft Visual Studi
o 8\VC\include\QtScript  -IC:\Qt\4.4.2\mkspecs\win32-msvc2005   -DQT_NO_TEXTCODE
C -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL  -DQT_NO_COMP
RESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD  -DQT_NO_QOBJE
CT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED  /Zc:w
char_t- project.cpp
cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft
', object file assumed
cl : Command line warning D9027 : source file 'Files\Microsoft' ignored
cl : Command line warning D9024 : unrecognized source file type 'Visual', object
 file assumed
cl : Command line warning D9027 : source file 'Visual' ignored
cl : Command line warning D9024 : unrecognized source file type 'Studio', object
 file assumed
cl : Command line warning D9027 : source file 'Studio' ignored
cl : Command line warning D9024 : unrecognized source file type '8\VC\include',
object file assumed
cl : Command line warning D9027 : source file '8\VC\include' ignored
cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft
', object file assumed
cl : Command line warning D9027 : source file 'Files\Microsoft' ignored
cl : Command line warning D9024 : unrecognized source file type 'Visual', object
 file assumed
cl : Command line warning D9027 : source file 'Visual' ignored
cl : Command line warning D9024 : unrecognized source file type 'Studio', object
 file assumed
cl : Command line warning D9027 : source file 'Studio' ignored
cl : Command line warning D9024 : unrecognized source file type '8\VC\include\Qt
Core', object file assumed
cl : Command line warning D9027 : source file '8\VC\include\QtCore' ignored
cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft
', object file assumed
cl : Command line warning D9027 : source file 'Files\Microsoft' ignored
cl : Command line warning D9024 : unrecognized source file type 'Visual', object
 file assumed
cl : Command line warning D9027 : source file 'Visual' ignored
cl : Command line warning D9024 : unrecognized source file type 'Studio', object
 file assumed
cl : Command line warning D9027 : source file 'Studio' ignored
cl : Command line warning D9024 : unrecognized source file type '8\VC\src\coreli
b\global', object file assumed
cl : Command line warning D9027 : source file '8\VC\src\corelib\global' ignored
cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft
', object file assumed
cl : Command line warning D9027 : source file 'Files\Microsoft' ignored
cl : Command line warning D9024 : unrecognized source file type 'Visual', object
 file assumed
cl : Command line warning D9027 : source file 'Visual' ignored
cl : Command line warning D9024 : unrecognized source file type 'Studio', object
 file assumed
cl : Command line warning D9027 : source file 'Studio' ignored
cl : Command line warning D9024 : unrecognized source file type '8\VC\include\Qt
Script', object file assumed
cl : Command line warning D9027 : source file '8\VC\include\QtScript' ignored
project.cpp
c:\qt\4.4.2\qmake\project.h(37) : fatal error C1083: Cannot open include file: '
qscriptengine.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\c
l.EXE"' : return code '0x2'
Stop.
Building qmake failed, return code 2


Шо делать и куды бечь?


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: ритт от Октябрь 09, 2008, 07:42
собирать кутэ в папке, имя которой не содержит пробелов и других невменяемых символов...


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: spirit от Октябрь 09, 2008, 09:43
а зачем кутишные инклуды и либы нужно было ложить в папку со студией?


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Я.К. от Октябрь 10, 2008, 05:46
собирать кутэ в папке, имя которой не содержит пробелов и других невменяемых символов...

А как же мне сказать QT, в какой каталог собираться? А то я этого ключика в configure-шных настройках не разглядел....


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: denka от Октябрь 10, 2008, 07:37
Ну для этого как раз есть файл README в папке с Qt, а так же раздел в ассистанте Installing Qt/Windows где описана процедура инсталяции. Смотрите тут http://doc.trolltech.com/4.4/install-win.html (http://doc.trolltech.com/4.4/install-win.html)


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Я.К. от Октябрь 10, 2008, 14:54
Я установил PATH как C:\Qt\442\bin. configure выделила этот путь среди других, прописанных под этой переменной.
Однако она все еще не видит путей к INCLUDам и LIBам. Я попробовал прописать пути C:\Qt\442\lib и C:\Qt\442\include, но это не помогло.
Что делать дальше?


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Я.К. от Октябрь 11, 2008, 16:30
Откопал файл qmake.cache.
Так написано следующее:

Код:
QMAKE_QT_VERSION_OVERRIDE = 4
OBJECTS_DIR     = tmp\obj\debug_shared
MOC_DIR         = tmp\moc\debug_shared
RCC_DIR         = tmp\rcc\debug_shared
sql-plugins    += sqlite
styles         += windows plastique cleanlooks windowsxp windowsvista motif cde
imageformat-plugins += gif tiff jpeg
CONFIG         += dist-config large-config medium-config minimal-config small-config full-config build_all debug incremental create_prl link_prl depend_includepath QTDIR_build
QT_BUILD_PARTS  = libs tools examples demos docs translations
QMAKESPEC       = C:\Qt\4.4.2\mkspecs\win32-msvc2005
ARCH            = windows
QT_BUILD_TREE   = C:\Program Files\Microsoft Visual Studio 8\VC
QT_SOURCE_TREE  = C:\Qt\4.4.2
DEFINES        *= QT_EDITION=QT_EDITION_DESKTOP
QMAKE_MOC       = $$QT_BUILD_TREE\bin\moc.exe
QMAKE_UIC       = $$QT_BUILD_TREE\bin\uic.exe
QMAKE_UIC3      = $$QT_BUILD_TREE\bin\uic3.exe
QMAKE_RCC       = $$QT_BUILD_TREE\bin\rcc.exe
QMAKE_DUMPCPP   = $$QT_BUILD_TREE\bin\dumpcpp.exe
QMAKE_INCDIR_QT = $$QT_BUILD_TREE\include
QMAKE_LIBDIR_QT = $$QT_BUILD_TREE\lib

То есть установлена переменная QT_BUILD_TREE.

Однако когда я её переустановил в системе, то ничего не изменилось.
Я гружу VS Command Prompt, и происходит всё то же самое - Qt говорит, что у меня хреновые пути с пробелами.


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: lit-uriy от Октябрь 11, 2008, 17:05
2 Я.К. если ничего не получается могу свой вариант предложить. Он хоть и под МинГВу, но я думаю подправив пути и используемые инструменты должно получится. Т.е. использовать не командную строку студии, а просто виндовую с использование BAT'ника.
См. местный вариант тут (http://prog.org.ru/qt_wiki/index.php/Main/Install) про установку Qt под Windows с mingw 32.
См. мой вариант тут (http://wiki.crossplatform.ru/index.php/Установка_Qt4.3.x) про сборку Qt с использованием MinGW32.


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: shadone от Октябрь 19, 2008, 01:42
Не кладите Qt в каталог, путь до которого содержит пробелы. Более того, минимизируйте количество под-каталогов (т.е. кладите ближе к корню, без использования длинных имен каталогов) - т.к. в windows имеется (очень маленькое) ограничение на количество символов в пути и размер командной строки, из-за чего компиляции сложных библиотек, использующих много опций компилятора может провалиться.

Также можно попробовать другой вариант - shadow build - просто создайте новый пустой каталог (например c:\build\qt), перейдите в него и запустите сборку c:\path\to\qt\sources\configure.exe && nmake - в таком случае исходники будут находиться в   c:\path\to\qt\sources\, а собранные бинарники и все создаваемые файлы - в c:\build\qt


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: ритт от Октябрь 19, 2008, 05:38
2shadone
а offsource-build сейчас точно работоспособен? во всяком случае, видел какие-то патчи по данной теме у кдешников...


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: shadone от Октябрь 19, 2008, 11:07
не уверен на 100% по поводу ветки 4.4, но 4.5 я собираю именно таким образом.


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Примерный ученик от Октябрь 19, 2008, 15:28
А переменную окружения QTDIR создал?


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Detonator от Октябрь 19, 2008, 17:24
не уверен на 100% по поводу ветки 4.4, но 4.5 я собираю именно таким образом.

А какой 4.5 речь? Вроде последняя версия 4.4.3


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: pastor от Октябрь 19, 2008, 17:42
А какой 4.5 речь?

snapshot


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: silart от Октябрь 24, 2008, 06:29

Добрый день всем!

Никто не собирал Qt 4.4.3 статически?
Просто я ее собрал следующим образом:
Код:
configure -platform win32-msvc2005 -static -qt-sql-odbc -qt-sql-sqlite -no-qt3support -no-opengl -no-phonon -qt-style-windowsxp

потом

Код:
nmake sub-src
nmake sub-tools

И получилось так, что собранные модули моего проекта требуют RTL библиотеки студии. Что очень неприятно для статической сборки. Подскажите пожалуйста ключик, чтоб это исправить.
С версией Qt 4.4.0 таких проблем у меня не возникало. Собирал точно также.


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Admin от Октябрь 24, 2008, 07:50
у меня 4.4.3 требует только msvcrt9.dll - больше ничего. А вот 4.4.4 собралась как то кривовато, программа перестала работать.


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: silart от Октябрь 24, 2008, 08:58
у меня 4.4.3 требует только msvcrt9.dll - больше ничего. А вот 4.4.4 собралась как то кривовато, программа перестала работать.

Это потому что она 2008 студией собрана. Если собрать 2005 она будет требовать MSVCR80.DLL.
Вот как от этого избавиться? Ведь в 4,4,0 версии такой проблемы не было.


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: pastor от Октябрь 24, 2008, 11:43
Вот как от этого избавиться? Ведь в 4,4,0 версии такой проблемы не было.

Была такая проблема и в 4.4.0 и в любых друший версиях. И это не баг, а фича. Для сборки true static версии Qt, ищем по форуму, уже было. См:

155894 - Include a Windows flag in Qt configure script that builds a true static library. (http://trolltech.com/developer/task-tracker/index_html?id=155894&method=entry)


Название: Re: Сборка Qt - очередные проблемы.
Отправлено: Detonator от Ноябрь 11, 2008, 23:16
Смотри тут
http://www.prog.org.ru/topic_8009_0.html