Получение программы тестирования библиотеки 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'|

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

0

Решение

В 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 с 32-битной MinGW в 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 в Windows 8 64 бит.

0

Другие решения

Других решений пока нет …