C语言curl静态库

编译文件:https://wwwk.lanzouf.com/ifcAO0lcvi1e
大一,水平低下,勿喷,求解决

C语言curl静态库发送QQ邮箱邮件报错(要求只能用dev-c)
Windows环境 Dec-C++ 5.10
C语言代码
#include <stdio.h>
#include "curl/curl/curl.h" 
void send_verification_code(const char* email, const char* code) {
    CURL *curl;
    CURLcode res;
    char post_data[256];
    sprintf(post_data, "from=example@qq.com&to=%s&subject=Verification Code&body=Your verification code is %s.", email, code);
    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "smtp://smtp.qq.com:25");
        curl_easy_setopt(curl, CURLOPT_USERNAME, "email");
        curl_easy_setopt(curl, CURLOPT_PASSWORD, "password");
        curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "email");
        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, email);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data);
        res = curl_easy_perform(curl);
        if (res != CURLE_OK)
            printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
}

int main(void) {
    send_verification_code("emil", "code");
    return 0;
}


Dev-C++报错
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0xfe): undefined reference to `__imp_curl_global_init'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x107): undefined reference to `__imp_curl_easy_init'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x146): undefined reference to `__imp_curl_easy_setopt'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x170): undefined reference to `__imp_curl_easy_setopt'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x19a): undefined reference to `__imp_curl_easy_setopt'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x1c4): undefined reference to `__imp_curl_easy_setopt'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x1ee): undefined reference to `__imp_curl_easy_setopt'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x218): more undefined references to `__imp_curl_easy_setopt' follow
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x22b): undefined reference to `__imp_curl_easy_perform'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x24b): undefined reference to `__imp_curl_easy_strerror'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x26d): undefined reference to `__imp_curl_easy_cleanup'
C:\Users\10929\Desktop\118\main.o    main.c:(.text+0x276): undefined reference to `__imp_curl_global_cleanup'
c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe    main.o: bad reloc address 0x0 in section `.pdata'
C:\Users\10929\Desktop\118\collect2.exe    [Error] ld returned 1 exit status
25        C:\Users\10929\Desktop\118\Makefile.win    recipe for target '项目1.exe' failed


# Project: 项目1
# Makefile created by Dev-C++ 5.10

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o
LINKOBJ  = main.o
LIBS     = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -L"C:/Users/10929/Desktop/118/curl/curl" ../WinMM.Lib ../Wldap32.Lib ../WS2_32.Lib ../AdvAPI32.Lib curl/libcurl.lib
INCS     = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Users/10929/Desktop/118/curl/lib"
CXXINCS  = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++" -I"C:/Users/10929/Desktop/118/curl/lib"
BIN      = 项目1.exe
CXXFLAGS = $(CXXINCS) 
CFLAGS   = $(INCS) -L"curl/lib"
RM       = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
    ${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
    $(CC) $(LINKOBJ) -o $(BIN) $(LIBS)

main.o: main.c
    $(CC) -c main.c -o main.o $(CFLAGS)

路径

img

img

Dev-c设置

img

img

img

你这样改一下试试,假设c:/xxx/curl/lib目录下面包含 libcurl.lib

原始:LIBS     = -static-libgcc -L"C:/Users/10929/Desktop/118/curl/curl" curl/libcurl.lib
====》改成:LIBS     = -static-libgcc -L"c:/xxx/curl/lib" libcurl.lib

原始:CFLAGS   = $(INCS) -L"curl/lib"
====》改成:CFLAGS   = $(INCS) -L"c:/xxx/curl/lib"

在Windows环境中使用Dev-C++ 5.10发送QQ邮箱邮件,可能会出现一些错误。这可能是由于您使用的Curl静态库与Dev-C++不兼容造成的。

为了解决这个问题,您可以尝试以下步骤:

1.确保您的Dev-C++版本是最新的,并且已经安装了最新的Curl库。

2.在Dev-C++中打开项目属性设置静态库路径,确保静态库路径正确无误。

3.检查您的代码中是否有任何语法错误或缺少的库引用。

4.如果仍然无法解决问题,可以尝试使用其他编译器或其他版本的Curl库。

5.查看curl库的版本是否与你的dev-c++兼容。

如果仍然有问题,请提供更多的细节,以便我们能更好的帮助您。

链接里面加入-l 把对应的库名字加入进来,这样子链接才用这些库。否则只是找到了,没有链接,出现了未定义。

通过curl实现邮件发送功能,通过此功能,可以将一些配置信息自动发送到指定邮箱,满足自动运维要求。
@echo off
rem 使用curl实现邮件发送
rem -------------------------------------------
rem 参数
set smtp="smtp://smtp.sina.com"
set mail_from=发件地址@sina.com
set mail_to=收件地址@sina.com
set data=mail.txt
set user="发件人用户名:发件人密码"
rem -------------------------------------------
rem 编写邮件头消息
echo From:%mail_from% > %data%
echo To:%mail_to% >> %data%
echo Subject:邮件内容标题 %date%>> %data%
echo.>> %data%

echo 这里填写具体的邮件内容 >> %data%
rem 例如:获取当前的外网地址信息
rem curl ifconfig.me >> %data%
rem -------------------------------------------
rem 发送邮件
curl --verbose -s --url "%smtp%" --mail-from %mail_from% --mail-rcpt %mail_to% --upload-file %data% --user %user%

rem 删除临时文件
del %data%
pause