Получение программы тестирования библиотеки Botan для компиляции под Windows 7 (MinGW, Code::Blocks)

Я тщетно пытался заставить эту тестовую программу скомпилировать

   #include <botan/botan.h>


   int main()
   {
       Botan::LibraryInitializer init;
   }

Я скачал библиотечный источник с сайта. Я запустил configure.py, который работал нормально. Затем я попытался запустить MinGW-make

Это ошибка, которую я получил

c:\Botan-1.11.7>mingw32-make
g++  -m64 -pthread -fPIC -fvisibility=hidden -std=c++11 -D_REENTRANT -fstack-pro
tector -O3 -momit-leaf-frame-pointer -Wall -Wextra -Wstrict-aliasing -Wstrict-ov
erflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wold-s
tyle-cast -Wzero-as-null-pointer-constant -Ibuild\include -c C:\Botan-1.11.7\src
\lib\algo_base\scan_name.cpp -o build\obj\lib\src_lib_algo_base_scan_name.obj
C:\Botan-1.11.7\src\lib\algo_base\scan_name.cpp:1:0: warning: -fPIC ignored for
target (all code is position independent) [enabled by default]
C:\Botan-1.11.7\src\lib\algo_base\scan_name.cpp:1:0: sorry, unimplemented: 64-bi
t mode not compiled in
mingw32-make: *** [build\obj\lib\src_lib_algo_base_scan_name.obj] Error 1

Я искал Google и любой доступный форум, который мог найти. Я нашел готовые библиотеки для Windows в скрытой папке на их сайте. Однако пакет содержал файлы lib и dll, а не файлы.a, которые требуются MinGW. Я пытаюсь использовать программу LIB2A, которая создала файл.a. Я добавил этот файл в параметры компоновщика code::blocks. Я также включил папку включения.

Когда я пытаюсь скомпилировать, я получаю эту ошибку.

C:\botan\include\botan\init.h|41|undefined reference to `_imp___ZN5Botan18LibraryInitializer10initializeERKSs'|

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

1 ответ

В mingw32-make установлен флаг -m64, что означает, что он пытается собрать 64-битную библиотеку. Чтобы собрать 64-битную библиотеку, вам понадобится MinGW-w64.

Когда вы запустили configure.py, он, вероятно, настроил ваш MakeFile для создания 64-битной библиотеки. Вы хотите проверить, какие параметры установлены в его выводе. Это включает в себя возможность построения 32-разрядных или 64-разрядных. В любом случае вам понадобится такой вариант: python configure.py --os=mingw --cc=gcc

В этом вопросе была похожая ошибка, и было предложено использовать MinGW-w64, что позволит вам создать 64-битную библиотеку: Сборка 64-битной dll с MinGW 32-битной в Eclipse

Чтобы собрать с помощью mingw32-make из командной строки, вам также необходимо добавить каталог bin MinGW-w64 в путь Windows и, вероятно, удалить упакованный код MinGW Code::Blocks, чтобы избежать конфликтов. Вы по-прежнему будете использовать mingw32-make для сборки библиотеки с MinGW-w64; хотя он называется mingw32-make, он будет собирать 64 бита.

Если вы решите собрать 64-битную библиотеку, вам также нужно будет построить 64-битное приложение, поэтому вам нужно будет настроить MinGW-w64 для Code::Blocks. Чтобы настроить MinGW-w64 в Code::Blocks, посмотрите этот вопрос: Настройка MingW и Code:: Blocks в 64-битной Windows 8.

Другие вопросы по тегам