要怎么样才能让这个程序输出Congrets?

代码如下,运行环境为Windows 10。Openssl/md5.h 这一行一直报错,我已经尝试过安装OpenSSL,但是还是报错。我询问的解决方案是要在gcc的时候加一个特殊的flag这个程序才能正常运行,那么要加的flag是什么呢?7de38f3c3d3baa7ca58a366f09577586经过转换是secrets,这应该是正确答案,但是因为程序运行不起来所以无法确定。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/md5.h>

char* md5sum(char* string)
{
    unsigned char digest[16] = { 0 };
    char* digest_str = malloc(33);
    memset(digest_str, 0, 33);
    MD5((unsigned char*)string, strlen(string), digest);

    for (int i = 0; i < 16; ++i)
    {
        sprintf(digest_str + i * 2, "%02x", digest[i]);
    }

    return digest_str;
}


int check_flag(char* flag)
{
    char* checksum = md5sum(flag);
    if (!memcmp(checksum, "7de38f3c3d3baa7ca58a366f09577586", 32)) {
        return 0;
    }
    return 1;
}


int main(int argc, char** argv)
{
    char flag[1024];
    printf("%s\nInput flag: ", argv[0]);
    scanf("%s", flag);
    if (!check_flag(flag)) {
        puts("Congrats!");
    }
    else {
        puts("Wrong flag :<");
    }
}

把openssl路径加入到项目的包含目录中
你现在写的是相对路径,编译器必须找到文件的绝对路径,要么你#include的时候直接写绝对路径,要么把相对路径在包含目录中指定