Qt не работает с библиотеками Botan_v1.10.1 - PullRequest
1 голос
/ 24 ноября 2011

Я пытался заставить 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

Я не могу выйти за пределы этой ошибки. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 24 ноября 2011

Вы можете извлечь ботан из дерева исходников Qt Creator и использовать qmake и ваш gcc для его построения.

В качестве альтернативы, используйте Gendef MinGW-w64 или эквивалент MinGW.org для генерации файла .def изDLL и используйте dlltool для создания библиотеки импорта.

...