Я пытался заставить Qt 4.7.3 работать с новейшими библиотеками Botan v1.10.1.
Существует двоичный файл Botan для Windows, но, похоже, файлы * .dll предназначены только для MS Visual Studio.
Поэтому я попытался скомпилировать Botan с помощью mingw32, чтобы получить Qt-совместимые файлы * .dll и * .a.
Дополнительная информация:
-Windows 7 64bit.
-Пробовал скомпилировать в 32-битном режиме.
-Qt все новейшее и отлично работает, установлен в 32-битном режиме.
-Botan v1.10.1 для x86 Windows.
Я открыл командную строку Qt и выдал следующую команду.
configure.py --cc=gcc --cpu=x86
Эта команда сгенерировала Makefile.
Тогда я использовал эту команду.
mingw32-make
Эта команда генерирует следующую ошибку после нескольких минут работы.
C: \ Botan-1.10.1 \ src \ utils \ time.cpp: в функции 'tm
Ботан :::: do_gmtime (time_t) ':
C: \ Botan-1.10.1 \ src \ utils \ time.cpp: 55: ошибка: «gmtime_s» не было объявлено в этой области
mingw32-make: * [build \ lib \ time.obj] Ошибка 1
Я открыл C: \ Botan-1.10.1 \ src \ utils \ time.cpp и изменил это
#if defined(BOTAN_TARGET_OS_HAS_GMTIME_S)
gmtime_s(&tm, &time_val); // Windows
#elif defined(BOTAN_TARGET_OS_HAS_GMTIME_R)
gmtime_r(&time_val, &tm); // Unix/SUSv2
#else
std::tm* tm_p = std::gmtime(&time_val);
if (tm_p == 0)
throw Encoding_Error("time_t_to_tm could not convert");
tm = *tm_p;
#endif
к этому
/*#if defined(BOTAN_TARGET_OS_HAS_GMTIME_S)
gmtime_s(&tm, &time_val); // Windows
#elif defined(BOTAN_TARGET_OS_HAS_GMTIME_R)
gmtime_r(&time_val, &tm); // Unix/SUSv2
#else*/
std::tm* tm_p = std::gmtime(&time_val);
if (tm_p == 0)
throw Encoding_Error("time_t_to_tm could not convert");
tm = *tm_p;
//#endif
Затем я снова запустил mingw32-make. На этот раз он скомпилировал больше и застрял на этой ошибке.
C: \ Botan-1.10.1> mingw32-make process_begin: CreateProcess (NULL, rm -f
libbotan-1.10.a, ...) не удалось. make (e = 2): система не может найти
указанный файл mingw32-make: * [libbotan-1.10.a] Ошибка 2
Я не могу выйти за пределы этой ошибки. Любая помощь будет принята с благодарностью.