试图编译生成 sha1 哈希的程序

trying to compile the program which generates sha1 hashes

我正在尝试编译这个程序https://gist.github.com/jrabbit/1042021 我正在使用这个 https://doc.opensuse.org/projects/satsolver/11.2/sha1_8h_source.html sha1.h 文件。但是,如果我尝试编译程序 gcc 会出现以下错误 (gcc on windows)

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.start up+0xa0): 未定义对 `WinMain@16' 的引用 collect2.exe:错误:ld 返回了 1 个退出状态

gcc 无法识别类型 u_int32_t 所以我在 sha1.c 代码

中将它们更改为 unit32_t

哪里出了问题?

图书馆没有main函数。任何 C 程序都必须有一个 main 函数才能编译。

因此,您可以创建一个 main.c 文件并将库包含在其中。 或者sha1.c的第251行将#if 0修改为#if 1,这样会打开库中包含的模板主函数

请注意,模板“main”函数存在一些错误。用类似的东西替换它:

#define BUFSIZE 10

int
main(int argc, char **argv)
{
    SHA1_CTX ctx;
    unsigned char hash[20], buf[BUFSIZE];
    int i;

    for(i=0;i<BUFSIZE;i++)
    {
        buf[i] = i + '0';
        printf("%i", i);
    }
    printf("\n");
    SHA1Init(&ctx);
    for(i=0;i<BUFSIZE;i++)
        SHA1Update(&ctx, buf + i, 1);
    SHA1Final(hash, &ctx);

    printf("SHA1=");
    for(i=0;i<20;i++)
        printf("%02x", hash[i]);
    printf("\n");
    return 0;
}