2016-11-18 12 views
0

Я скачал библиотеку AESCrypt, чтобы скомпилировать с MingW: https://github.com/paulej/AESCrypt/tree/master/Windowsошибка компиляции AEScrypt с использованием MinGW-w64 в окнах

Я получаю сообщение об ошибке:

C:\Users\MyPC\AppData\Local\Temp\cclSPvvW.o:aescrypt.c:(.text+0xa2): undefined re 
ference to `sha256_starts(sha256_context*)' 
C:\Users\MyPC\AppData\Local\Temp\cclSPvvW.o:aescrypt.c:(.text+0xc0): undefined re 
ference to `sha256_update(sha256_context*, unsigned char*, unsigned long)' 
C:\Users\MyPC\AppData\Local\Temp\cclSPvvW.o:aescrypt.c:(.text+0x815): undefined r 
eference to `aes_encrypt(aes_context*, unsigned char*, unsigned char*)' 
C:\Users\MyPC\AppData\Local\Temp\cclSPvvW.o:aescrypt.c:(.text+0x829): undefined r 
eference to `sha256_update(sha256_context*, unsigned char*, unsigned long)' 
C:/Program Files (x86)/mingw-w64/i686-6.1.0-posix-dwarf-rt_v5-rev1/mingw32/bin/. 
./lib/gcc/i686-w64-mingw32/6.1.0/../../../../i686-w64-mingw32/lib/../lib/libming 
w32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined refe 
rence to `[email protected]' 
collect2.exe: error: ld returned 1 exit status 

Я на Windows 7 x64, я использую MingW-w64 6.1.0.

+0

Показать команду, используемую для компиляции –

+0

Используйте заглавные буквы для AES – SHR

ответ

0

Эта ошибка означает, что вы забыли связать файл, содержащий код отсутствующего символа. Обычно это файл .o или .lib/.a.

В вашем случае один из символов: sha256_starts (sha256_context *), который, вероятно, находится в sha256.o. Проверьте фактическую ссылку и убедитесь, что она включает этот файл или библиотеку, которая включает его.

файл сборки, как это должно сделать трюк:

COMP = gcc 
RM = rm -f 
OBJS = aes.o sha256.o stdafx.o AESCrypt.o AESCryptShellExt.o AESCryptWorkerThreads.o BufferedFile.o ErrorHandling.o PasswdDialog.o ProgressDialog.o 
LDFLAGS = -mwindows 
SERVERLDFLAGS = 
TARGET = aes.exe 

all : $(TARGET) 

$(TARGET) : $(OBJS) 
    $(COMP) $(LDFLAGS) $(DEBUGFLAGS) -o $(TARGET) $^ 

clean : 
    $(RM) *.o 

%.o : %.c %.h 
    $(COMP) $(CFLAGS) -c $< 

%.o : %.cpp %.h 
    $(COMP) $(CFLAGS) -c $< 
+0

я на Windows, и не .o или LIB/требуется, пожалуйста, посмотрите на Благодарю вас. –

+0

Ошибка ссылки означает, что он не может найти – Tom

+0

Ошибка ссылки означает, что он не может найти двоичный код для sha256_starts и sha256_update. Если вы посмотрите на sha256.c, вы обнаружите реализацию этих функций. Это означает, что вам нужно скомпилировать sha256.c для генерации sha256.o, а затем, когда вы связываете свои файлы вместе, этот файл должен быть включен с другим .o, чтобы получить исполняемый файл. – Tom