c++ - 在 Windows 中使用 mingW-w64 编译 AEScrypt 时出错

标签 c++ c windows mingw

我下载了 AESCrypt 库以便使用 MingW 进行编译: https://github.com/paulej/AESCrypt/tree/master/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 `WinMain@16'
collect2.exe: error: ld returned 1 exit status

我使用的是 Windows 7 x64,我使用的是 MingW-w64 6.1.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 $<

关于c++ - 在 Windows 中使用 mingW-w64 编译 AEScrypt 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681715/

相关文章:

windows - 批处理文件命令行参数

c++ - QQml_colorProvider : no color provider has been set

c++ - 优化 OpenGL Pointcloud 的树

c++ - 具有来自同一类的回调的 Poco 计时器

c - 接收每个组播数据包两次 Onload?

ruby - Windows 上生成的 Ruby 进程在 shell 终止时死亡

java - 测试覆盖率在 IntelliJ IDEA 中不起作用

java - 将 std::unique_ptr 传递给 JNI

c - ANSI C 中的自赋值

c - 静态内联、外部内联和普通内联函数有什么区别?