【问题标题】:AES file encryption in CC中的AES文件加密
【发布时间】:2012-11-13 06:11:04
【问题描述】:

我需要使用 GCC 在 Windows 7 平台上编译 MIT 大学发布的 AES C 源代码。起初我遇到了一些“丢失文件”错误,现在我解决了所有这些错误,我收到了一个链接器错误“未定义对 WinMain16 的引用”。

我正在使用 CodeBlocks。

我做了什么:

  • 使用代码块将 aes.c 代码复制到新项目中
  • 复制需要的头文件
  • 编译了aes.c文件

可能是什么问题?

【问题讨论】:

标签: c gcc windows-7 aes


【解决方案1】:

你编译的代码可能只是一个库,导出aes_encrypt()等函数。

为了能够将其编译成可执行文件,您需要告诉库实际一些事情,例如here(只是想明白;该代码可能使用不同的库) .

库通常带有“测试文件”,请尝试检查 MIT 库包。

也尝试使用该库寻找 AES 实现。

更新

source code you cite 有一个有条件定义的main() 函数,因此您需要定义TEST 才能编译它,并且您需要编译一个控制台应用程序,而不是一个 GUI Windows 应用程序。 Windows GUI 应用程序需要 WinMain() 函数,而控制台应用程序使用 main() 函数。

【讨论】:

  • 谢谢,但包含主要功能的文件 aes.c 列在stuff.mit.edu/afs/sipb/project/vlcplayer/old/src/ffmpeg/…
  • 好的,现在清楚多了。您似乎正在使用错误的项目类型设置进行编译。查看更新的答案。
  • 您正在评论的答案。我添加了一个“更新”部分。我还导入了该文件(以及其他 .c 和 .h 文件),并将 Code::Blocks 项目设置为“控制台应用程序”;我不得不删除两个断言并查找 Windows rand() 函数,但它确实生成了一个可执行文件。
  • 亲爱的 Iserni,我将 AES.c 代码放在控制台应用程序中,并将 common 和 aes 头文件放在项目中,但是当我尝试编译 AES.c 文件时需要什么测试构建 AES.c 文件它给了我同样的错误 undefined reference to WinMain@16
  • 如果您的应用需要 WinMain,那么它不是控制台应用。 WinMain 是 Windows GUI 应用程序的入口点。至于 TEST,只需在源代码中设置 #define TEST,或者在编译器选项中设置它(对于 gcc,它将是 -DTEST=whatever;在 Code::Blocks 中是 Project > Build Options > Compiler Settings > #defines)。
猜你喜欢
  • 2020-04-01
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2013-07-25
  • 2015-02-23
  • 2011-08-03
相关资源
最近更新 更多