Решил собрать кошелек bitcoin-а из исходников в MinGW, но во время сборки вылетели ошибки с неопределенными символами из библиотек Berkeley db. Библиотеки собраны самостоятельно в MinGW. В VS2020-12 все библиотеки и примеры собираются и работают без ошибок. Dev-CPP 5.11, gcc, g++ 4.9.2. Ld выдает ошибки: D:\DEV\VC++\EnvExample>make -f Makefile.win 1>111.txt EnvExample.o:EnvExample.cpp: (.text+0x305): undefined reference to `DbEnv:bEnv( unsigned int)' EnvExample.o:EnvExample.cpp: (.text+0x3ec): undefined reference to `Db:b(DbEnv* , unsigned int)' EnvExample.o:EnvExample.cpp: (.text+0x57a): undefined reference to `DbEnv:bEnv( unsigned int)' collect2.exe: error: ld returned 1 exit status make: *** [EnvExample.exe] Error 1 Я пробовал подкинуть рабочую библиотеку *.lib, но выскакивают те же ошибки. В чем проблема? В архивах рабочий пример для VS2012 и нерабочий для MinGW4.9.2 . сорц базы https://github.com/berkeleydb/libdb/releases/download/v5.3.28/db-5.3.28.tar.gz
Собираю 32-битную библиотеку в Windows 8 x64 из папки db-5.3.28\build_unix (build_mingw нет). Видимо, библиотека собирается с символьными именами unix. Указать ключи или платформу в Makefile? На др. форумах пишут, что нужно указать флаги -DB_WIN32 -m32 -D_REENTRANT и использовать компилятор g++ вместо gcc. Импортируемый символ DbEnv: EnvExample.o __ZN5DbEnvC1Ej libdb_cxx-5.3.dll.a __imp__ZTI5DbEnv
trsoft, а зачем вам нужно собирать в MinGW если у вас всё нормально собирается в VS,или там есть исходники для сборки в MinGW ?
Надо собрать в mingw, потому что проекты кошельков собираются без проблем только в этой среде. код собрался с библиотекой libdb_cxx.a изBerkeleydb 4.8.30, в которой совпадают символьные имена , но сборка базы данных завершается с ошибкой. Но программа не работает, библиотека тоже "глючная", не может передать флаг в DB_ENV. Это библиотека единственная рабочая, в остальных компилятор ругается на неправильные индексы (ранлиб, ар, пляски с бубном и тд). Как собрать библиотеки Berkeleydb 4.8.30? Хорошо, что при установке Линукса, ее не нужно собирать из исходников. --- Сообщение объединено, 4 ноя 2020 --- Есть возможность сделать библиотеку *.a из рабочей *.lib. Собрал implib из исходников, запустил, получил файл определений .def. Имена заманглены компилятором VS C++, надо исправлять вручную (по дефу из libdb_cxx.a). Дальше dlltool выдает пустой файл xxxxxxx.a