Russian Qt Forum
Ноябрь 24, 2024, 04:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Компиляция static QT 4.7 c static OpenSSL под MSVC2010  (Прочитано 5451 раз)
Miatar
Гость
« : Февраль 28, 2011, 02:43 »

1.Качаю исходники OpenSSL (openssl-1.0.0d).
2.Компилирую их статически:
Код
DOS
> perl Configure VC-WIN32 no-asm --prefix=d:\Miatar\cpplibs\openssl
> ms\do_ms
> nmake -f ms\nt.mak
> nmake -f ms\nt.mak install
 
Взято отсюда.
3.Беру qt-everywhere-opensource-src-4.7.1 патчу его по методу отсюда. (Опыт применения)
Копирую bin / lib / include папки из openssl в распакованную директорию QT. (папки сливаются). Взято вот отсюда.

Пытаюсь собрать с помощью следующего батника. Батник расположен в директории куте.
Код
DOS
setlocal
set MAKEFLAGS=
call "D:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
set QMAKESPEC=win32-msvc2010
set PATH=%CD%\bin;%PATH%
configure -debug-and-release -platform win32-msvc2010 -static -no-crt -no-qt3support -nomake examples -nomake demos -openssl-linked -I "d:\Miatar\cpplibs\openssl\include" -L "d:\Miatar\cpplibs\openssl\lib"
nmake
pause
endlocal
 
В самом конце когда собирается nmake'ом assistant получаю ошибку.

Вообщем - как решить? Просто собрат куте без ссл легко получается(по методам описанным выше). Так же получалось собрать из инсталенной OpenSSL (непомню где брал)  с использованием ключа -openssl, но остается зависимость от двух длл. Так же есть подозрение, что ключ -openssl-linked портит ибо если просто -openssl собирать(на собранной самим OpenSSL еще не пробовал) все работало а если использовать линкед - собирается но проекты ругаются на кучу unresolved external symbol.
Прошу помощи.
« Последнее редактирование: Март 02, 2011, 10:32 от Miatar » Записан
Miatar
Гость
« Ответ #1 : Март 02, 2011, 10:30 »

Вообщем еще раз прособирал, что бы получить ошибку. Вот:
Код
DOS
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 
       "D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe" -f Makefile.Debug all
 
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 
       cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MTd -MP -GR -EHsc -W3 -w34100 -w3 4189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_XMLPATTERNS_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\..\include\QtCore" -I"..\..\include\QtXmlPatterns" -I"..\..\include" -I"d:\Miatar\cpplibs\openssl\include" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_static" -I"..\..\mkspecs\win32-msvc2010" -Fotmp\obj\debug_static\ @C:\Users\Daminian\AppData\Local\Temp\nm3A5A.tmp
main.cpp
qapplicationargument.cpp
qapplicationargumentparser.cpp
       link /LIBPATH:"d:\Miatar\cpplibs\QtStaticSSL\lib" /LIBPATH:"d:\Miatar\cpplibs\QtStaticSSL\lib" /NOLOGO /DELAYLOAD:"OleAcc.dll" /DEBUG /SUBSYSTEM:CONSOLE /MANIFEST /MANIFESTFILE:"tmp\obj\debug_static\xmlpatterns.intermediate.manifest" /OUT:..\..\bin\xmlpatterns.exe @C:\Users\Daminian\AppData\Local\Temp\nm416C.tmp
LINK :
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__DeleteDC@4 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__DeleteObject@4 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__GetBitmapBits@12 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__BitBlt@36 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__GetObjectA@12 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__SelectObject@8 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__CreateCompatibleBitmap@12 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__GetDeviceCaps@8 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__CreateCompatibleDC@4 referenced in function _readscreen
libeay32.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__CreateDCA@16 referenced in function _readscreen
..\..\bin\xmlpatterns.exe : fatal error LNK1120: 10 unresolved externals
NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\link.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
 

Тут сказали что можно решить добавив Gdi32.lib в список библиотек. Вопрос - как добавить библеотеку на этап сборки?
« Последнее редактирование: Март 02, 2011, 10:34 от Miatar » Записан
Miatar
Гость
« Ответ #2 : Март 02, 2011, 11:59 »

Проблема разрешилась - возникла другая, но и ее тоже я решил.

Сборка делается следующим образом:
Код
DOS
-L "path/to/dir/with/Gdi32library/" and -lGdi32.lib
либо ручным редактированием qmake.conf

Лично я добавил сразу две библеотеки : Gdi32.lib и User32.lib. Поидеи все это можно было не делать если собирать QT из OpenSSL отсюда. У меня получалась стабильная сборка, возможно там уже отрегулированы зависимости.

Затем на этапе сборки проекта появляются 10+ unresolved external symbol
Код
DOS
Error 1 error LNK2019: unresolved external symbol _ASN1_INTEGER_get referenced in function "long __cdecl q_ASN1_INTEGER_get(struct asn1_string_st *)" (?q_ASN1_INTEGER_get@@YAJPAUasn1_string_st@@@Z)
Error 2 error LNK2019: unresolved external symbol _ASN1_STRING_data referenced in function "unsigned char * __cdecl q_ASN1_STRING_data(struct asn1_string_st *)" (?q_ASN1_STRING_data@@YAPAEPAUasn1_string_st@@@Z)
Error 3 error LNK2019: unresolved external symbol _ASN1_STRING_length referenced in function "int __cdecl q_ASN1_STRING_length(struct asn1_string_st *)" (?q_ASN1_STRING_length@@YAHPAUasn1_string_st@@@Z)
Error 4 error LNK2019: unresolved external symbol _BIO_ctrl referenced in function "long __cdecl q_BIO_ctrl(struct bio_st *,int,long,void *)" (?q_BIO_ctrl@@YAJPAUbio_st@@HJPAX@Z)
Error 5 error LNK2019: unresolved external symbol _BIO_free referenced in function "int __cdecl q_BIO_free(struct bio_st *)" (?q_BIO_free@@YAHPAUbio_st@@@Z)
Error 6 error LNK2019: unresolved external symbol _BIO_new referenced in function "struct bio_st * __cdecl q_BIO_new(struct bio_method_st *)" (?q_BIO_new@@YAPAUbio_st@@PAUbio_method_st@@@Z)
Error 7 error LNK2019: unresolved external symbol _BIO_new_mem_buf referenced in function "struct bio_st * __cdecl q_BIO_new_mem_buf(void *,int)" (?q_BIO_new_mem_buf@@YAPAUbio_st@@PAXH@Z)
Error 8 error LNK2019: unresolved external symbol _BIO_read referenced in function "int __cdecl q_BIO_read(struct bio_st *,void *,int)" (?q_BIO_read@@YAHPAUbio_st@@PAXH@Z)
Error 9 error LNK2019: unresolved external symbol _BIO_s_mem referenced in function "struct bio_method_st * __cdecl q_BIO_s_mem(void)" (?q_BIO_s_mem@@YAPAUbio_method_st@@XZ)
Error 10 error LNK2019: unresolved external symbol _BIO_write referenced in function "int __cdecl q_BIO_write(struct bio_st *,void const *,int)" (?q_BIO_write@@YAHPAUbio_st@@PBXH@Z)
Error 11 error LNK2019: unresolved external symbol _BN_num_bits referenced in function "int __cdecl q_BN_num_bits(struct bignum_st const *)" (?q_BN_num_bits@@YAHPBUbignum_st@@@Z)
Error 12 error LNK2019: unresolved external symbol _CRYPTO_num_locks referenced in function "int __cdecl q_CRYPTO_num_locks(void)" (?q_CRYPTO_num_locks@@YAHXZ)
Error 13 error LNK2019: unresolved external symbol _CRYPTO_set_locking_callback referenced in function "void __cdecl q_CRYPTO_set_locking_callback(void (__cdecl*)(int,int,char const *,int))" (?q_CRYPTO_set_locking_callback@@YAXP6AXHHPBDH@Z@Z)
Error 14 error LNK2019: unresolved external symbol _CRYPTO_set_id_callback referenced in function "void __cdecl q_CRYPTO_set_id_callback(unsigned long (__cdecl*)(void))" (?q_CRYPTO_set_id_callback@@YAXP6AKXZ@Z)
Error 15 error LNK2019: unresolved external symbol _CRYPTO_free referenced in function "void __cdecl q_CRYPTO_free(void *)" (?q_CRYPTO_free@@YAXPAX@Z)
Error 16 error LNK2019: unresolved external symbol _DSA_free referenced in function "void __cdecl q_DSA_free(struct dsa_st *)" (?q_DSA_free@@YAXPAUdsa_st@@@Z)
Error 17 error LNK2019: unresolved external symbol _d2i_X509 referenced in function "struct x509_st * __cdecl q_d2i_X509(struct x509_st * *,unsigned char const * *,long)" (?q_d2i_X509@@YAPAUx509_st@@PAPAU1@PAPBEJ@Z)
Error 18 error LNK2019: unresolved external symbol _ERR_error_string referenced in function "char * __cdecl q_ERR_error_string(unsigned long,char *)" (?q_ERR_error_string@@YAPADKPAD@Z)
Error 19 error LNK2019: unresolved external symbol _ERR_get_error referenced in function "unsigned long __cdecl q_ERR_get_error(void)" (?q_ERR_get_error@@YAKXZ)
...
...
 
Решается РУЧНЫМ подключением библиотек libeay32.lib и ssleay32.lib через линковщик с указанием пути до них.

Спасибо за внимание. Надеюсь тому кто нагуглит это - поможет сие.
Записан
CuteBunny
Гость
« Ответ #3 : Март 30, 2011, 08:40 »

Неделю назад скачал новый QtSDK и бинарник openssl, все само заработало.

p.s.: хотя в вашем случае, если нужна statica + msvc...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 20.