在libcurl 下载源码并且完成make mingw32
之后,得到 libcurl.a 文件,然后把它放在mingw home 下的lib文件夹中,mingw的gcc 会自动 " -I %mingwhome%\lib" 手动保护。这一步 libcurl 的库文件就算准备好了。
下一步就是在自己的 demo.c 程序中链接 libcurl.a 文件了
我的第一个版本就是
gcc -I(curl.h头文件) -L(libcurl.a)(可选) -o demo.exe -lcurl -lwldap32 -lws2_32 demo.c
但是还是会报错
C:\Users\lieliker\AppData\Local\Temp\ccjvlr27.o: In function `main':
D:/qhcode/c/VpnUtool/curltest.cpp:10: undefined reference to `__imp_curl_easy_init'
D:/qhcode/c/VpnUtool/curltest.cpp:12: undefined reference to `__imp_curl_easy_setopt'
D:/qhcode/c/VpnUtool/curltest.cpp:13: undefined reference to `__imp_curl_easy_perform'
D:/qhcode/c/VpnUtool/curltest.cpp:15: undefined reference to `__imp_curl_easy_strerror'
D:/qhcode/c/VpnUtool/curltest.cpp:17: undefined reference to `__imp_curl_easy_cleanup'
实际上按网上说的只要 有libcurl.a 文件,并且加上了 -lcurl -lwldap32 -lws2_32 参数,不应该会报错。但是从libcurl docs/example 下的make 的一些例子,通过不断排除 -I. -I../.. -I../../lib -g -O2 -Wall -W -fno-strict-aliasing -m64 -D_AMD64_ 等无关参数,最终发现起作用的是 -DCURL_STATICLIB 这个参数
所以最简单gcc 命令就如下:
g++.exe curltest.cpp -o curltest.exe -ID:\qhdevelop\C\curl_7_71_1\include -DCURL_STATICLIB -lcurl -lwldap32 -lws2_32
本人使用的是 mingw 开发环境 ,非 vs20.。那一套