Показаны сообщения с ярлыком MinGW. Показать все сообщения
Показаны сообщения с ярлыком MinGW. Показать все сообщения

четверг, 14 марта 2013 г.

Visual C/C++ x32 vs Visual C/C++ x64 vs MinGW x32

Оказывается у меня появились постоянные подписчики :)

После одного из комментариев  у меня появилась идея протестировать на производительность код, собираемый разными компиляторами под Windows.

Задача: Выяснить, возможно ли без потери производительности использовать ГНУтые компиляторы для высокопроизводительных коммерческих задач под Windows.

Дано:
1) MinGW 4.4.0
2) Visual C/C++ 2008SP1 (из Visual Studio 2008 Express)
3) x64 компилятор из Windows SDK v7.0 (http://en.wikipedia.org/wiki/Microsoft_Windows_SDK, http://www.microsoft.com/en-us/download/details.aspx?id=18950)

---8<---- РЕМАРКА ---8<----
То, как я устанавливал сначала Visual C/C++ 2008SP1 (вместе с SP1) это отдельная песня -- везде лежит Visual C/C++ 2008 Express без SP, и отдельно SP1, который встает только на версии НЕ Express.

Где-то (так и не понял, да и не помню где) раздобыл web инсталлятор
2 728 440 vcsetup.exe
он и содержит Visual C/С++ 2008+SP1
в отличии от
2 701 304 vcsetup.exe
который содержит только Visual C/С++ 2008 без SP1

Далее прыжки с бубнами на накатывании Windows SDK, причем после очередной итерации выползли ошибки при компиляции проектов :(((
---8<---- РЕМАРКА ---8<----

Но это все мелочи -- в результате я скомпилировал один и тот же исходный код Apache Benchmark из полного комплекта Apache 2.2.24 под тремя разными компиляторами 


 136 192 ab_mingw440_win32.exe
  85 504 ab_vs2008_amd64.exe
  72 704 ab_vs2008_win32.exe
При этом IMHO Visual Studio собирал проект раза в 2 быстрее чем QT Creator+MinGW.

А теперь в номера!!! (c)

Тестовый стенд: Ноутбук Acer TimelineX i3-330M RAM 3Gb, Windows7 x64 Home Basic, свап запрещен, канал в интернет 10Mbit, nginx 1.3.33 на 127.0.0.1:80

Win7x64 i3-330M: 60К обращений в 4 трида к localhost@nginx133. Попытка №1
Тест 1 Тест 2 Тест 3 Тест 4 Тест 5 Тест 6 Тест 7 Тест 8 Тест 9 Тест 10 Мин Средн Макс
ab_mingw440_win32.exe 1 379,54 оpеr pеr sеc 1 398,09 оpеr pеr sеc 1 324,43 оpеr pеr sеc 657,12 оpеr pеr sеc 657,91 оpеr pеr sеc 1 402,17 оpеr pеr sеc 923,67 оpеr pеr sеc 616,27 оpеr pеr sеc 658,14 оpеr pеr sеc 1 372,15 оpеr pеr sеc 616,27 -0,21% 1038,949 0,00% 1402,17 -1,06%
ab_vs2008_amd64.exe 1 310,44 оpеr pеr sеc 1 412,47 оpеr pеr sеc 880,73 оpеr pеr sеc 665,88 оpеr pеr sеc 682,79 оpеr pеr sеc 1 417,15 оpеr pеr sеc 668,90 оpеr pеr sеc 617,56 оpеr pеr sеc 667,27 оpеr pеr sеc 1 313,13 оpеr pеr sеc 617,56 0,00% 963,632 -7,25% 1417,15 0,00%
ab_vs2008_win32.exe 1 409,88 оpеr pеr sеc 1 364,85 оpеr pеr sеc 1 399,11 оpеr pеr sеc 616,27 оpеr pеr sеc 667,04 оpеr pеr sеc 1 384,00 оpеr pеr sеc 662,33 оpеr pеr sеc 660,27 оpеr pеr sеc 664,73 оpеr pеr sеc 1 408,85 оpеr pеr sеc 616,27 -0,21% 1023,733 -1,46% 1409,88 -0,51%



Win7x64 i3-330M: 60К обращений в 4 трида к localhost@nginx133. Попытка №2
Тест 1 Тест 2 Тест 3 Тест 4 Тест 5 Тест 6 Тест 7 Тест 8 Тест 9 Тест 10 Мин Средн Макс
ab_mingw440_win32.exe 1 152,21 оpеr pеr sеc 1 233,93 оpеr pеr sеc 1 266,43 оpеr pеr sеc 631,45 оpеr pеr sеc 602,55 оpеr pеr sеc 558,19 оpеr pеr sеc 610,10 оpеr pеr sеc 625,80 оpеr pеr sеc 550,16 оpеr pеr sеc 572,21 оpеr pеr sеc 550,16 -0,27% 780,303 0,00% 1266,43 -2,17%
ab_vs2008_amd64.exe 1 297,18 оpеr pеr sеc 1 260,21 оpеr pеr sеc 559,68 оpеr pеr sеc 551,81 оpеr pеr sеc 621,14 оpеr pеr sеc 576,62 оpеr pеr sеc 611,57 оpеr pеr sеc 602,89 оpеr pеr sеc 605,94 оpеr pеr sеc 559,64 оpеr pеr sеc 551,81 0,00% 724,668 -5,35% 1297,18 0,00%
ab_vs2008_win32.exe 1 242,70 оpеr pеr sеc 1 169,40 оpеr pеr sеc 1 226,06 оpеr pеr sеc 621,24 оpеr pеr sеc 633,31 оpеr pеr sеc 614,30 оpеr pеr sеc 610,11 оpеr pеr sеc 552,25 оpеr pеr sеc 529,96 оpеr pеr sеc 535,94 оpеr pеr sеc 529,96 -3,54% 773,527 -0,65% 1242,7 -3,84%

Win7x64 i3-330M: 60К обращений в 10 тридов к localhost@nginx133
Тест 1 Тест 2 Тест 3 Тест 4 Тест 5 Тест 6 Тест 7 Тест 8 Тест 9 Тест 10 Мин Средн Макс
ab_mingw440_win32.exe 1 345,75 оpеr pеr sеc 649,22 оpеr pеr sеc 624,88 оpеr pеr sеc 1 111,28 оpеr pеr sеc 1 144,01 оpеr pеr sеc 648,48 оpеr pеr sеc 809,03 оpеr pеr sеc 1 394,04 оpеr pеr sеc 625,69 оpеr pеr sеc 646,52 оpеr pеr sеc 624,88 -3,45% 899,89 -3,39% 1394,04 0,00%
ab_vs2008_amd64.exe 1 274,83 оpеr pеr sеc 648,92 оpеr pеr sеc 655,22 оpеr pеr sеc 1 385,00 оpеr pеr sеc 652,66 оpеr pеr sеc 646,19 оpеr pеr sеc 1 341,99 оpеr pеr sеc 684,25 оpеr pеr sеc 659,04 оpеr pеr sеc 1 366,79 оpеr pеr sеc 646,19 0,00% 931,489 -0,35% 1385 -0,64%
ab_vs2008_win32.exe 1 375,10 оpеr pеr sеc 648,70 оpеr pеr sеc 641,77 оpеr pеr sеc 1 338,72 оpеr pеr sеc 644,24 оpеr pеr sеc 629,18 оpеr pеr sеc 1 383,01 оpеr pеr sеc 1 382,51 оpеr pеr sеc 644,14 оpеr pеr sеc 663,93 оpеr pеr sеc 629,18 -2,75% 935,13 0,00% 1383,01 -0,78%




























Win7x64 i3-330M: 60К обращений в 20 тридов к localhost@nginx133
Тест 1Тест 2Тест 3Тест 4Тест 5Тест 6Тест 7Тест 8Тест 9Тест 10МинСреднМакс
ab_mingw440_win32.exe1 329,93 оpеr pеr sеc1 371,66 оpеr pеr sеc1 387,50 оpеr pеr sеc654,44 оpеr pеr sеc1 383,01 оpеr pеr sеc623,36 оpеr pеr sеc656,68 оpеr pеr sеc623,36-2,24%1058,082857-8,43%1387,5-0,32%
ab_vs2008_amd64.exe1 392,02 оpеr pеr sеc1 392,02 оpеr pеr sеc649,03 оpеr pеr sеc1 341,52 оpеr pеr sеc1 241,49 оpеr pеr sеc624,27 оpеr pеr sеc1 379,54 оpеr pеr sеc624,27-2,09%1145,6985710,00%1392,020,00%
ab_vs2008_win32.exe1 367,28 оpеr pеr sеc1 331,31 оpеr pеr sеc680,25 оpеr pеr sеc993,32 оpеr pеr sеc1 379,04 оpеr pеr sеc637,20 оpеr pеr sеc767,08 оpеr pеr sеc637,20,00%1022,211429-11,89%1379,04-0,92%



Win7x64 i3-330M: 500 обращений в 10 тридов к google.ru
Тест 1Тест 2Тест 3Тест 4Тест 5Тест 6Тест 7Тест 8Тест 9Тест 10МинСреднМакс
ab_mingw440_win32.exe3,98 оpеr pеr sеc4,18 оpеr pеr sеc3,99 оpеr pеr sеc3,92 оpеr pеr sеc3,89 оpеr pеr sеc3,890,00%3,9920,00%4,180,00%
ab_vs2008_amd64.exe4,23 оpеr pеr sеc3,95 оpеr pеr sеc3,37 оpеr pеr sеc3,75 оpеr pеr sеc3,97 оpеr pеr sеc3,37-0,08%3,854-0,01%4,230,00%
ab_vs2008_win32.exe3,74 оpеr pеr sеc3,90 оpеr pеr sеc3,68 оpеr pеr sеc3,84 оpеr pеr sеc3,88 оpеr pеr sеc3,68-0,03%3,808-0,02%3,9-0,02%

































WinXPx32@VirtualBox: 500 обращений в 10 тридов к google.ru
Тест 1 Тест 2 Тест 3 Тест 4 Тест 5 Тест 6 Тест 7 Тест 8 Тест 9 Тест 10 Мин Средн Макс
ab_mingw440_win32.exe 2,25 оpеr pеr sеc 2,05 оpеr pеr sеc 3,31 оpеr pеr sеc 3,31 оpеr pеr sеc 2,58 оpеr pеr sеc 2,05 -0,06% 2,7 0,00% 3,31 0,00%
ab_vs2008_win32.exe 2,44 оpеr pеr sеc 2,59 оpеr pеr sеc 2,58 оpеr pеr sеc 2,49 оpеr pеr sеc 2,69 оpеr pеr sеc 2,44 0,00% 2,558 -0,01% 2,69 -0,04%


Выводы:
0: На ноутбуке нельзя проводить производственное тестирование, т.к. он живет своей собственной жизнью даже при отключенных энергосберегающих опциях!!!
1: Все три скомпилированных кода работают примерно одинаково (погрешность менее 1-5-10%)
2: Код скомпилированный MinGW хотя и больше по размеру, но не уступает по производительности коду скомпилированному Visual C/C++ (а иногда и выигрывает (незначительно, но выигрывает!!! :))) ))
3: Переход на компилятор x64 не оправдан для программ использующих менее 2GB RAM ни по производительности скомпилированного кода, ни по количеству танцев с бубнами.

Я выкладываю результаты своих изысканий (http://yadi.sk/d/u2E9NRpg3HJ-E):
1) Исходники с проектными файлами для QT+Mingw, Visual Studio
2) Откомпилированные exe-шники (VS2008x32, VS2008x64, MinGWx32)
3) Результаты тестов в txt и xls форматах

Крайне поучительно будет взглянуть на
1) Настройки QT+Mingw, Visual Studio для компиляции исходников Apache
2) Особенности настройки проектных файлов .pro для QT Creator
3) Особенности написания .bat файлов для замены функций Linux под Windows ;)

Я был бы признателен, если бы кто-нибудь взял бы на себе тяжкий труд по тестированию производительности на десктопной/серверной машине данных программ при этом переключаясь между несколькими OS: WindowsXPx32, Windows7x64, Linux32, Linux64, а затем бы поделился результатами.


пятница, 9 ноября 2012 г.

QT: Visual C/C++ 2010 vs Mingw

Давайте сравним результат нашего творчества:


mingwrt-3.15.2-mingw32-dev + gcc-c++-4.4.0-mingw32-bin + QT 4.7.3
QtCore4                            dll│2492 K


QtGui4                             dll│9619 K
QtNetwork4                         dll│1181 K
securesocketclient                 exe│104448
13 715 968 bytes in 4 files

Visual C/C++ 2010 + QT 4.8.3 Debug

msvcp100d                          dll│743248
msvcr100d                          dll│1464 K
QtCored4                           dll│4385 K
QtGuid4                            dll│  14 M
QtNetworkd4                        dll│1742 K
securesocketclient4                exe│173056


23 563 936 bytes in 6 files



Visual C/C++ 2010 + QT 4.8.3 Release

msvcp100                           dll│421200
msvcr100                           dll│770384
QtCore4                            dll│2516 K
QtGui4                             dll│8370 K
QtNetwork4                         dll│1027 K
securesocketclient4                exe│ 82944

13 474 464 bytes in 6 files


Исходя из вышеприведенных результатов Visual C/C++ 2010 генерит менее избыточный код порядка на 15-20% чем Mingw, но с учетом того, что придется таскать еще и библиотеки msvcp100.dll/msvcr100.dll в принципе  то на то и выйдет :(

Осталось лишь проверить, насколько по скорости код Visual C/C++ 2010 быстрее (оптимально оптимизирован на скорость) чем код Mingw.





среда, 4 июля 2012 г.

MinGW + POCO. Часть 2

В очередной раз убеждаюсь что для того чтобы опенсорсовские исходники заработали, необходимо приложить "драчильный напильник".

Скачал пример HTTP сервера на POCO http://poco.roundsquare.net/downloads/HTTPServer.zip
И попытался скомпилировать на QT Creator + MinGW

Получил ошибку
D:/QtSDK/mingw/lib//libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'


Угрохал 3 часа на выявления причин.

Оказалось что в файле ...\Foundation\include\Poco\Config.h
прописано явно

// Define to enable Windows Unicode (UTF-8) support
#define POCO_WIN32_UTF8

что приводит в ...\Util\include\Poco\Util\ServerApplication.h 
//
// Macro to implement main()
//
#if defined(_WIN32) && defined(POCO_WIN32_UTF8)
#define POCO_SERVER_MAIN(App) \
int wmain(int argc, wchar_t** argv) \
{ \
App app; \
return app.run(argc, argv); \
}
#elif defined(POCO_VXWORKS)
#define POCO_SERVER_MAIN(App) \
int pocoSrvMain(const char* appName, ...) \
{ \
std::vector<std::string> args; \
args.push_back(std::string(appName)); \
va_list vargs; \
va_start(vargs, appName); \
const char* arg = va_arg(vargs, const char*); \
while (arg) \
{ \
args.push_back(std::string(arg)); \
arg = va_arg(vargs, const char*); \
} \
va_end(vargs); \
App app; \
return app.run(args); \
}
#else
#define POCO_SERVER_MAIN(App) \
int main(int argc, char** argv) \
{ \
App app; \
return app.run(argc, argv); \
}
#endif

к формированию через POCO_SERVER_MAIN(...)

функции int wmain(int argc, wchar_t** argv) вместо int main(int argc, char** argv)которую MinGW упорно ожидает увидеть.


Решение проблемы
1) Закомментировать #define POCO_WIN32_UTF8 в Config.h и отключить -DUNICODE
т.к. все равно в ...\Foundation\include\Poco\Platform_WIN32.h стоит взведение POCO_WIN32_UTF8

// Unicode Support
#if defined(UNICODE) && !defined(POCO_WIN32_UTF8)
#define POCO_WIN32_UTF8
#endif
но если первое еще можно пережить, то второе может привести к непредсказуемым последствиям.


2) Резать (вернее вшивать) по живому ...\Util\include\Poco\Util\ServerApplication.h, что я и предлагаю сделать:

//
// Macro to implement main()
//
#if defined(_WIN32) && defined(POCO_WIN32_UTF8) && (!defined(__MINGW__) && !defined(__MINGW32__))
Нужно добавить то, что отмечено зеленым цветом, после чего проект собирается вполне адекватно.




Компиляция примеров POCO в QT Creator + MinGW

Для начала возьмем самое простое -- скомпилируем под  QT Creator+MinGW примеры POCO
(http://pocoproject.org/download/index.html)

Basic Edition
No external dependencies — start developing immediately


poco-1.4.3p1.zip │4176 K


содержит в себе следующие компоненты


║..                                    │readme
║build                                 │version
║contrib                               │
CppUnit                               │
║doc                                   │
Foundation                            │
Net                                   │
║patches                               │
Util                                  │
XML                                   │
║build_CE_vs90.cmd                     │
║build_vcexpress2008.cmd               │
║build_vcexpress2010.cmd               │
║build_vs100.cmd                       │
║build_vs71.cmd                        │
║build_vs80.cmd                        │
║build_vs90.cmd                        │
║buildvms.com                          │
║buildwin.cmd                          │
║changelog                             │
║components                            │
║configure                             │
║contributors                          │
║DLLVersion.rc                         │
║libversion                            │
║license                               │
║Makefile                              │
║manifest                              │
║news                                  │



Professional Edition
Includes additional powerful libraries and tools
Платный, поэтому по определению не интересует


Нас же интересует

Complete Edition
Requires OpenSSL, MySQL Client and ODBC


poco-1.4.3p1-all.zip │7003 K

..                       │libversion
build                    │license
contrib                  │Makefile
CppUnit                  │manifest
Crypto                   │news
Data                     │readme
doc                      │version
Foundation               │
Net                      │
NetSSL_OpenSSL           │
PageCompiler             │
patches                  │
Util                     │
XML                      │
Zip                      │
build_CE_vs90         cmd│
build_vcexpress2008   cmd│
build_vcexpress2010   cmd│
build_vs100           cmd│
build_vs71            cmd│
build_vs80            cmd│
build_vs90            cmd│
buildvms              com│
buildwin              cmd│
changelog                │
components               │
configure                │
contributors             │
DLLVersion            rc │

ГРАБЛИ №1


Как видем из списка файлов дистрибьютив не заточен под компиляцию в  QT Creator+MinGW.
Что же делать? Писать проекты/makefile в ручную?

Обратимся к мировому разуму:
http://gluescript.sourceforge.net/?q=node/22

Похожую проблему народ поборол используя Premake4 (http://industriousone.com/premake/download) и скрипт на lua (http://gluescript.svn.sourceforge.net/viewvc/gluescript/trunk/src/poco.zip?view=log)

Но проблему побороли не до конца и не на той версии POCO и как следствие скрипты оказались не совсем корректными.
Пришлось с бубном и матом, методом проб и ошибок писать свои скрипты: 
http://www.dymovoy.ru/download/premake4_lua_poco-1.4.3p1-all.rar


Потребуется:
http://sourceforge.net/projects/premake/files/Premake/4.3/premake-4.3-windows.zip/download
premake-4.3-windows.zip   │ 90861

в котором лежит
premake4.exe              │261632

и собственно сами новые скрипты lua http://www.dymovoy.ru/download/premake4_lua_poco-1.4.3p1-all.rar

кладем скрипты по директориям а дальше в корневой директории POCO запускаем
C:\premake4\premake4.exe gmake


В результате будут созданы файлы Makefile, которые и будут использоваться для начальной компиляции библиотеки.



ГРАБЛИ №2

Обратите внимание, что стоит в файлах lua
             "WINVER=0x0501",
Это означает что версия ОС у нас не ниже Windows XP.
Это реальный баг MinGW: по умолчанию переменная WINVER=0x0500 и как следствие Windows2000, а MinGW не умеет корректно работать со стеком в Windows2000.

Поэтому компиляцию нужно проводить из батника !build_mingw.bat

@echo off



setlocal

set OPENSSL_DIR=c:\openssl
set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
set OPENSSL_LIB=%OPENSSL_DIR%\lib
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
set LIB=%LIB%;%OPENSSL_LIB%

set POCO_BASE=%CD%
set PATH=D:\QtSDK\mingw\bin\;%POCO_BASE%\bin;%PATH%

set PLATFORM=Win32


set POCO_OS_FAMILY_WINDOWS=1
set Win32=0x0501
set MINGW32=0x0501
set POCO_VXWORKS=
set _WIN32_WINNT=0x0501


C:\premake4\premake4.exe gmake

mingw32-make.exe config=release
mingw32-make.exe

endlocal

в результате в директории ...\poco\lib\ должны появиться откомпилированные файлы *.a, которые я руками переименовал в *.lib (я это понял уже потом что нужно переименовать -- QT Creator не хотел их добавлять в проект)
libPoco_CppUnit_mt                          lib│216938
libPoco_CppUnit_mtd                         lib│216938
libPoco_Crypto_mt                           lib│382736
libPoco_Crypto_mtd                          lib│389834
libPoco_Data_mt                             lib│1360 K
libPoco_Data_mtd                            lib│1379 K
libPoco_Foundation_mt                       lib│4320 K
libPoco_Foundation_mtd                      lib│4411 K
libPoco_Net_mt                              lib│2791 K
libPoco_Net_mtd                             lib│2841 K
libPoco_NetSSL_mt                           lib│ 984 K
libPoco_NetSSL_mtd                          lib│1000 K
libPoco_PageCompiler_mt                     lib│151998
libPoco_PageCompiler_mtd                    lib│154900
libPoco_Util_mt                             lib│1537 K
libPoco_Util_mtd                            lib│1556 K
libPoco_XML_mt                              lib│1492 K
libPoco_XML_mtd                             lib│1531 K
libPoco_Zip_mt                              lib│1232 K
libPoco_Zip_mtd                             lib│1249 K





ГРАБЛИ №3


Компиляция самого примера это тоже не для слабонервных
Открываем в самом интерфейсе QT Creator файл проекта *.pro и добавляем библиотеки *.lib/*.a (правой кнопкой мышки) (помечено оранжевым цветом) и руками переменные (помечено синим цветом), затем дошкуриваем руками. Обратите внимание, что руками добавляются библиотеки POCO, WinSocket'а и библиотеки openssl. Как это сделать автоматом я так и не смог понять.





#-------------------------------------------------
#
# Project created by QtCreator 2012-07-03T16:48:27
#
#-------------------------------------------------


QT       += core


QT       -= gui


TARGET = sslprj02
CONFIG   += console
CONFIG   -= app_bundle


TEMPLATE = app


SOURCES += main.cpp


WINVER = 0x0501
_WIN32_WINNT = 0x0501


#-------------------------------------------------
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_NetSSL_mt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_NetSSL_mtd


INCLUDEPATH += $$PWD/../poco/NetSSL_OpenSSL/include/
DEPENDPATH += $$PWD/../poco/NetSSL_OpenSSL/include/
#-------------------------------------------------




#-------------------------------------------------
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Crypto_mt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Crypto_mtd


INCLUDEPATH += $$PWD/../poco/Crypto/include/
DEPENDPATH += $$PWD/../poco/Crypto/include/
#-------------------------------------------------


#-------------------------------------------------
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Net_mt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Net_mtd


INCLUDEPATH += $$PWD/../poco/Net/include/
DEPENDPATH += $$PWD/../poco/Net/include/
#-------------------------------------------------


#-------------------------------------------------
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Util_mt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Util_mtd


INCLUDEPATH += $$PWD/../poco/Util/include/
DEPENDPATH += $$PWD/../poco/Util/include/
#-------------------------------------------------




#-------------------------------------------------
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_XML_mt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_XML_mtd


INCLUDEPATH += $$PWD/../poco/XML/include/
DEPENDPATH += $$PWD/../poco/XML/include/
#-------------------------------------------------




#-------------------------------------------------
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Foundation_mt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../poco/lib/ -llibPoco_Foundation_mtd


INCLUDEPATH += $$PWD/../poco/Foundation/include/
DEPENDPATH += $$PWD/../poco/Foundation/include/
#-------------------------------------------------


win32: LIBS += -LC:/openssl/lib/ -lssleay32
win32: LIBS += -LC:/openssl/lib/ -llibeay32


INCLUDEPATH += c:/openssl/include/
DEPENDPATH += c:/openssl/include/


win32: LIBS += -LD:/QtSDK/mingw/lib/ -lws2_32
win32: LIBS += -LD:/QtSDK/mingw/lib/ -liphlpapi


В файле *.cpp до #include вставляем строку

#define _WIN32_WINNT 0x0501
чтобы уж быть точно уверенным.

ГРАБЛИ №4

Перед запуском в отладке или просто так убедитесь, что у вас доступны DLL (прописана директория в переменной PATH или лежат в текущей директории) следующие файлы:

СКЗИ МагПро КриптоПакет он же openssl 0.9.8e
cryptoeay32-0.9.8.dll                        │1387 K


ssleay32-0.9.8.dll                           │330426
zlib1.dll                                    │ 73216





Основные куски библиотек MinGW

libgcc_s_dw2-1.dll                           │ 43008
mingwm10.dll                                 │ 11362


Основные библиотеки QT (большая часть не нужна, но на всякий случай положите в доступную папку)
phonon4.dll                                  │344576
QtCore4.dll                                  │2492 K
QtDeclarative4.dll                           │2995 K
QtGui4.dll                                   │9619 K
QtMultimedia4.dll                            │174080
QtNetwork4.dll                               │1181 K
QtOpenGL4.dll                                │912384
QtScript4.dll                                │2126 K
QtScriptTools4.dll                           │745984
QtSql4.dll                                   │271872
QtSvg4.dll                                   │373248
QtWebKit4.dll                                │  17 M
QtXml4.dll                                   │399360
QtXmlPatterns4.dll                           │3912 K



Обратите внимание, что при запуске откомпилированного в DEBUG режиме файла нужно чтобы были еще доступны соответствующие библиотеки с буковкой <d>.

Пример:
....
QtCored4.dll                                 │  30 M
QtGuid4.dll                                  │ 148 M
QtSvgd4.dll                                  │5475 K
QtNetworkd4.dll                              │  19 M
....


ГРАБЛИ №5

Под гостевой ОС Windows XP откомпилированный пример работает нормально, под основной ОС Windows 7 пример вываливается с ошибкой:
I/O error: Permission denied
Так что есть еще с чем бороться %)