Я нахожусь на окнах 8 64 бит.libfreefare Ошибка mingw32-make на окнах
Я установил успешно libnfc, и я могу использовать Исполняемые примеры, которые находятся в libnfc \ Utils (например, НКА-mfclassic.exe; НКА-list.exe ...)
Я хотел бы чтобы манипулировать картами Mifare и использовать формат NDEF, поэтому я пытаюсь установить libfreefare в Windows.
Я следил за учебником по libnfc.org, показывающим, как иметь libfreefare в Windows, и он отлично работал.
И я использовал CMake-GUI для создания файла сборки
Переходя теперь к шагу mingw32-маке, у меня есть эта ошибка:
[ 55%] Building C object libfreefare/CMakeFiles/freefare.dir/tlv.c.obj
Linking C shared library libfreefare.dll
CMakeFiles\freefare.dir/objects.a(mifare_desfire.c.obj):mifare_desfire.c:(.text+0x64f): undefined reference to `RAND_bytes'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x1219): undefined reference to `DES_ecb_encrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x1242): undefined reference to `DES_ecb_encrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x1280): undefined reference to `DES_ecb_encrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x12a9): undefined reference to `DES_ecb_encrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x12d0): undefined reference to `DES_ecb_encrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x12f9): more undefined references to `DES_ecb_encrypt' follow
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x1489): undefined reference to `AES_set_encrypt_key'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x14a8): undefined reference to `AES_encrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x14c7): undefined reference to `AES_set_decrypt_key'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_crypto.c.obj):mifare_desfire_crypto.c:(.text+0x14e6): undefined reference to `AES_decrypt'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_key.c.obj):mifare_desfire_key.c:(.text+0x17): undefined reference to `DES_set_key'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_key.c.obj):mifare_desfire_key.c:(.text+0x32): undefined reference to `DES_set_key'
CMakeFiles\freefare.dir/objects.a(mifare_desfire_key.c.obj):mifare_desfire_key.c:(.text+0x58): undefined reference to `DES_set_key'
CMakeFiles\freefare.dir/objects.a(mifare_ultralight.c.obj):mifare_ultralight.c:(.text+0x7a3): undefined reference to `DES_random_key'
collect2.exe: error: ld returned 1 exit status
libfreefare\CMakeFiles\freefare.dir\build.make:351: recipe for target 'libfreefare/libfreefare.dll' failed
mingw32-make[2]: *** [libfreefare/libfreefare.dll] Error 1
CMakeFiles\Makefile2:74: recipe for target 'libfreefare/CMakeFiles/freefare.dir/all' failed
mingw32-make[1]: *** [libfreefare/CMakeFiles/freefare.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
Спасибо за вашу помощь !!
Мне кажется: 1. Возможно, вы не включили файл в компиляцию, которая имеет определения вышеперечисленных неопределенных переменных; 2. Возможно, вы включили файл в свою программу, но он не упоминается в файлах файлов Makefile для вашего компилятора. Не могли бы вы сначала выполнить поиск в вашем файле, где упомянуты вышеперечисленные переменные, а затем проверить, присутствует ли файл, в который они включены, в виде #include или путь к файлу находится в одном из путей Makefile. –
. У вас есть совместимая версия OpenSSL и правильно ли вы ссылались на libcrypto? –
@Peter Я обнаружил, что в 'mifare_desfire.c' есть' #include ', поэтому я думал, что это проблема пути, и я изменил его для' #include , но это не сработало. В каталоге, содержащем 'mifare_desfire.c', есть CMakeLists.txt, я добавил' include_directories (D: \\ tools \\ OpenSSL-Win64 \\ include) ', но не работал, есть способ указать дополнительную каталоги include ? –
wald