Windows 链接到 libcurl_a.lib

Posted

技术标签:

【中文标题】Windows 链接到 libcurl_a.lib【英文标题】:Windows linking to libcurl_a.lib 【发布时间】:2017-10-05 12:29:09 【问题描述】:

我完全按照在 curl/winbuild 目录中将 libcurl 构建为静态库的说明构建了 libcurl。它吐出一个libcurl_a.lib,一个.h 文件的集合,我将它们移动到我迅速添加到PATH 的文件夹中。然后我尝试使用命令构建我的程序

cl (*my source files*) /IC:/PATH_addon/include libcurl_a.lib Ws2_32.lib Wldap32.lib /DCURL_STATICLIB /link /LIBPATH:C:/PATH_addon/lib 

注意:

我是从命令行构建的,因为代码不是在 IDE 中编写的,也不是在这台机器上编写的

C:/PATH_addon/ 是一个文件夹,我在其中转储所有需要链接到路径的内容(它链接到我的路径),这样我就不会污染默认路径或我的 system32 文件夹

但是当我运行命令时,它告诉我有 12 个未解析的符号:

libcurl_a.lib(tftp.obj) : error LNK2001: unresolved external symbol __imp___time64
libcurl_a.lib(cookie.obj) : error LNK2001: unresolved external symbol __imp___time64
libcurl_a.lib(hostip.obj) : error LNK2001: unresolved external symbol __imp___time64
libcurl_a.lib(http.obj) : error LNK2001: unresolved external symbol __imp___time64
libcurl_a.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp___time64
libcurl_a.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp__strncpy
libcurl_a.lib(curl_sspi.obj) : error LNK2001: unresolved external symbol __imp__strncpy
libcurl_a.lib(url.obj) : error LNK2001: unresolved external symbol __imp__strncpy
libcurl_a.lib(strerror.obj) : error LNK2001: unresolved external symbol __imp__strncpy
libcurl_a.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp__strncpy
libcurl_a.lib(warnless.obj) : error LNK2019: unresolved external symbol __imp__read referenced in function _curlx_read
OLDNAMES.lib(read.obi) : error LNK2001: unresolved external symbol __imp__read
libcurl_a.lib(warnless.obj) : error LNK2019: unresolved external symbol __imp__write referenced in function _curlx_write
OLDNAMES.lib(write.obi) : error LNK2001: unresolved external symbol __imp__write
libcurl_a.lib(parsedate.obj) : error LNK2019: unresolved external symbol __imp___gmtime64 referenced in function _Curl_gmtime
libcurl_a.lib(strerror.obj) : error LNK2019: unresolved external symbol __imp__strerror referenced in function _Curl_strerror
libcurl_a.lib(curl_threads.obj) : error LNK2019: unresolved external symbol __imp___beginthreadex referenced in function _Curl_thread_create
libcurl_a.lib(smb.obj) : error LNK2019: unresolved external symbol __imp___getpid referenced in function _smb_format_message
libcurl_a.lib(file.obj) : error LNK2019: unresolved external symbol __imp__close referenced in function _file_done
OLDNAMES.lib(close.obi) : error LNK2001: unresolved external symbol __imp__close
libcurl_a.lib(file.obj) : error LNK2019: unresolved external symbol __imp__open referenced in function _file_connect
OLDNAMES.lib(open.obi) : error LNK2001: unresolved external symbol __imp__open
libcurl_a.lib(mime.obj) : error LNK2019: unresolved external symbol __imp__access referenced in function _curl_mime_filedata
OLDNAMES.lib(access.obi) : error LNK2001: unresolved external symbol __imp__access
MSVCRT.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4

为什么无法解析这些符号,有没有办法解决这个问题?

【问题讨论】:

这些是普通的 CRT 函数,在 msvcrt.lib 中定义。确保 LIB 环境变量设置正确,以便链接器可以找到它。或将其添加到 /LIBPATH。 谢谢@chkdrv!您问题的内容实际上帮助我解决了 curl 的链接问题。我错过了链接 Wldap32.lib 【参考方案1】:

解决方案(部分归功于令人难以置信的@Hans Passant):

添加/NODEFAULTLIB:LIBCMT 标志修复了该问题并允许成功编译和执行。

【讨论】:

以上是关于Windows 链接到 libcurl_a.lib的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 下拖动链接到 PyGTK 应用程序?

MinGW,链接到 Windows 上的 dll

CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件

MS Access 2003 + 到 SQL Server 2005 的链接表 + Windows 身份验证 = 慢

如何在 Windows 上将 OpenCV 库正确链接到 Eclipse?

windows如何将html文件链接到文件夹?