2016-11-18 92 views
0

我下載AESCrypt庫,以編譯使用MinGW: https://github.com/paulej/AESCrypt/tree/master/Windows錯誤編譯AEScrypt使用的MinGW-W64在Windows

我收到此錯誤信息:

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中。檢查實際的鏈接命令並確保它包含此文件或包含它的庫。

這樣一個Makefile應該使絕招:

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或IIb /,請看看github存儲庫,謝謝。 –

+0

鏈接錯誤意味着它找不到 – Tom

+0

鏈接錯誤意味着它無法找到sha256_starts和sha256_update的二進制代碼。如果你看看sha256.c,你會發現這些函數的實現。這意味着你必須編譯sha256.c來生成sha256.o,然後當你將文件鏈接在一起時,這個文件必須與另一個.o一起被包含來獲得可執行文件。 – Tom