c++ - Libcurl c++“未定义的引用”(Windows/MinGW/g++)
问题描述
我试图编译这段代码,
#include <curl/curl.h>
int main(void)
{
CURL *curl;
curl = curl_easy_init();
}
使用此命令:
g++ -I../curl/include/curl -L../curl/lib -DCURL_STATICLIB src/main.cpp -o main.exe -llibcurl_a
我收到很多错误,例如
../curl/lib/libcurl_a.lib(../builds/libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib/easy.obj):(.text$mn+0x4): undefined reference to `__security_cookie'
../curl/lib/libcurl_a.lib(../builds/libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib/easy.obj):(.text$mn+0x13e): undefined reference to `@__security_check_cookie@4'
../curl/lib/libcurl_a.lib(../builds/libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib/easy.obj):(.text$mn+0x2d): undefined reference to `_imp__WSACleanup@0'
../curl/lib/libcurl_a.lib(../builds/libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib/easy.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
我认为这是链接器的问题,但我不知道如何解决它。如果您需要更多信息,请告诉我。
如果有人可以帮助我,那就太好了。
解决方案
您将需要链接到 bufferoverflow.lib 库之一或在没有/GS
编译器开关的情况下重建 lib curl。
正在发生的事情是 lib curl 已经构建了一个缓冲区溢出保护开关/GS
Visual C++ 编译器为 lib curl 添加了增强的保护。编译后的代码无法链接,因为链接器无法解析对的引用,__security_cookie
因此您需要确保链接包含该__security_cookie
符号的缓冲区溢出库。
有关此错误的更多信息,请访问: https: //support.microsoft.com/en-us/help/894573/you-may-receive-the-linker-tools-error-lnk2001-error-messages-when-你
推荐阅读
- json - 如何将带有 json 数组的 Datastream 分解为单个数组元素的 DataStream
- android - 如何为媒体播放器使用 Intent?
- c# - 如何从 MemberInfo[] 创建表达式?
- r - 在 sapply 中使用 sapply
- vue.js - 隐藏无数据模板,直到通过 Axios 加载数据后
- windows - 同一主机上的多个容器使用相似的端口寻址
- css - 一些 CSS 网格不适合线条
- django - 使用python3.6和python2和django 2手动启动uwsgi
- mysql - 为什么我在 Create Table 的第 1 行出现错误
- java - 在聚合其他人时计数不同?