无法在我正在进行的项目中链接 libcurl



我有一个作为客户端程序开始的项目。稍后,我决定将某些客户端实施到服务器通信,以制造一种登录系统。我在普通的http post请求中开发了它。

最近,我已将服务器更新为HTTPS,现在普通的HTTP POST请求不再起作用,并且由于我将通过网络传输敏感数据,因此我决定在客户端上也实现SSL。我看到的替代方案包括带有OpenSSL/WolfSSL的Libcurl或使用OpenSSL提升。我决定继续前进。

所以现在,我尝试下载一些预编译的libcurl构建等,并且在链接到它方面没有成功,给我某种错误:

1>Attacker.obj : error LNK2001: unresolved external symbol __imp__PostMessageW@16
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__EnableWindow@8
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__GetWindowTextLengthA@4
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__GetOpenFileNameA@4
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__GetClientRect@8
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__SendMessageA@16
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__SetWindowTextA@8
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__GetWindowTextA@12
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__RedrawWindow@16
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__ShowWindow@8
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__SetWindowPos@28
1>GEFunc.obj : error LNK2001: unresolved external symbol __imp__DestroyWindow@4
1>FormVarClass.obj : error LNK2001: unresolved external symbol __imp__CreateSolidBrush@4
1>FormVarClass.obj : error LNK2001: unresolved external symbol __imp__CreatePen@12
1>FormVarClass.obj : error LNK2001: unresolved external symbol __imp__CreateFontW@56
1>GameClient.obj : error LNK2001: unresolved external symbol __imp__SetParent@8
1>GameClient.obj : error LNK2001: unresolved external symbol __imp__MoveWindow@24
1>GameClient.obj : error LNK2001: unresolved external symbol __imp__AttachThreadInput@12
1>GameClient.obj : error LNK2001: unresolved external symbol __imp__GetWindowLongA@8
1>GameClient.obj : error LNK2001: unresolved external symbol __imp__SetWindowLongA@12
1>GameClient.obj : error LNK2001: unresolved external symbol __imp__GetWindowRect@8
1>GUI.obj : error LNK2001: unresolved external symbol __imp__EndPaint@8
1>GUI.obj : error LNK2001: unresolved external symbol __imp__BeginPaint@8
1>GUI.obj : error LNK2001: unresolved external symbol __imp__PostQuitMessage@4
1>GUI.obj : error LNK2001: unresolved external symbol __imp__LoadCursorW@8
1>GUI.obj : error LNK2001: unresolved external symbol __imp__LoadIconW@8
1>GUI.obj : error LNK2001: unresolved external symbol __imp__TranslateMessage@4
1>GUI.obj : error LNK2001: unresolved external symbol __imp__CreateWindowExA@48
1>GUI.obj : error LNK2001: unresolved external symbol __imp__IsDialogMessageW@8
1>GUI.obj : error LNK2001: unresolved external symbol __imp__DispatchMessageW@4
1>GUI.obj : error LNK2001: unresolved external symbol __imp__RegisterClassExW@4
1>GUI.obj : error LNK2001: unresolved external symbol __imp__CloseWindow@4
1>GUI.obj : error LNK2001: unresolved external symbol __imp__DefWindowProcW@16
1>GUI.obj : error LNK2001: unresolved external symbol __imp__GetMessageW@16
1>Main.obj : error LNK2001: unresolved external symbol __imp__SHGetFolderPathA@20
1>Mem.obj : error LNK2001: unresolved external symbol __imp__EnumWindows@8
1>Mem.obj : error LNK2001: unresolved external symbol __imp__IsWindowVisible@4
1>Mem.obj : error LNK2001: unresolved external symbol __imp__GetWindow@8
1>Mem.obj : error LNK2001: unresolved external symbol __imp__GetWindowThreadProcessId@8
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__InvalidateRect@12
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__ExtTextOutW@32
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__FillRgn@12
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__RoundRect@28
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__CombineRgn@16
1>Overrides.obj : error LNK2001: unresolved external symbol enter code here__imp__ScrollWindow@20
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SetScrollPos@16
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__DeleteObject@4
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SetBkColor@8
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__EnableScrollBar@12
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SetCursor@4
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SetBkMode@8
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SetTextColor@8
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__GetSysColor@4
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__CreateRectRgn@16
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__CreateRoundRectRgn@24
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__DrawTextA@20
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SendMessageW@16
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__UnionRect@12
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__FillRect@12
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__InflateRect@12
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SelectObject@8
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__SetScrollInfo@16
1>Overrides.obj : error LNK2001: unresolved external symbol __imp__GetWindowTextLengthW@4
1>Window.obj : error LNK2001: unresolved external symbol __imp__TrackMouseEvent@4
1>libcurl.lib(strerror.obj) : error LNK2001: unresolved external symbol __imp__strerror
1>libcurl.lib(strerror.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurl.lib(url.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurl.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurl.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurl.lib(strerror.obj) : error LNK2001: unresolved external symbol __imp____sys_nerr
1>libcurl.lib(cookie.obj) : error LNK2001: unresolved external symbol __imp__fgets
1>libcurl.lib(netrc.obj) : error LNK2001: unresolved external symbol __imp__fgets
1>libcurl.lib(cookie.obj) : error LNK2001: unresolved external symbol __imp__fputs
1>libcurl.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(rtsp.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(http_proxy.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(parsedate.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(imap.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(cookie.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(hostip.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(url.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(http.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurl.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(tftp.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(digest.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(ftplistparser.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(vtls.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(url.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(http.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurl.lib(vtls.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurl.lib(url.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurl.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurl.lib(formdata.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurl.lib(warnless.obj) : error LNK2001: unresolved external symbol __imp__read
1>OLDNAMES.lib(read.obi) : error LNK2001: unresolved external symbol __imp__read
1>libcurl.lib(warnless.obj) : error LNK2001: unresolved external symbol __imp__write
1>OLDNAMES.lib(write.obi) : error LNK2001: unresolved external symbol __imp__write
1>libcurl.lib(curl_threads.obj) : error LNK2001: unresolved external symbol __imp___beginthreadex
1>libcurl.lib(file.obj) : error LNK2001: unresolved external symbol __imp__close
1>OLDNAMES.lib(close.obi) : error LNK2001: unresolved external symbol __imp__close
1>libcurl.lib(file.obj) : error LNK2001: unresolved external symbol __imp__open
1>OLDNAMES.lib(open.obi) : error LNK2001: unresolved external symbol __imp__open
1>libcurl.lib(file.obj) : error LNK2001: unresolved external symbol __imp___fstat64
1>libcurl.lib(smb.obj) : error LNK2001: unresolved external symbol __imp___getpid
1>libcurl.lib(system_win32.obj) : error LNK2001: unresolved external symbol __imp___mbspbrk
1>libcurl.lib(formdata.obj) : error LNK2001: unresolved external symbol __imp__feof
1>libcurl.lib(formdata.obj) : error LNK2001: unresolved external symbol __imp__ferror
1>libcurl.lib(formdata.obj) : error LNK2001: unresolved external symbol __imp___stat64

然后,我尝试从自己构建Libcurl,并从他们的网站上下载最新版本,并使用" Lib Debug -lib openssl"构建选项从头开始构建它。链接到openssl libs,并指向其包括目录,它编译并构建了我libcurl.lib文件。

所以,在我的主要项目中,现在我包括了libcurl包括dir和openssl,包括dir,然后我链接了这两个相应的lib文件夹,所以应该没事的。

http://prntscr.com/eg389b。

然后,在链接器中,我设置为" crypt32.lib; ws2_32.lib; wldap32.lib; libeay32.lib; ssleay32.lib; libcurld.lib;这是我发现应该完成的所有步骤,但是即使到那时,我也得到了完全相同的未解决的外部符号错误。

ps:从头开始不是一个选择。

ps2:为了便携性,我更希望自己构建我的程序,而无需外部DLL,而不是VC 重新列表。

编辑1

到目前为止,使用此处描述的方法 - 释放静态lib链接问题,我已经大大减少了未解决的外部符号的数量,并将其追溯到libcurld.lib,oldnames.lib和msvcrtd.lib。因此,只有其中三个出现并让我烦恼。

1>libcurld.lib(strerror.obj) : error LNK2019: unresolved external symbol __imp__strerror referenced in function _Curl_strerror
1>libcurld.lib(curl_gethostname.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurld.lib(strerror.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurld.lib(url.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurld.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurld.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp__strncpy
1>libcurld.lib(rand.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(http_ntlm.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(http_proxy.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(ntlm.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(pingpong.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(openssl.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(imap.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(rtsp.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(conncache.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(warnless.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(curl_addrinfo.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(inet_ntop.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(connect.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(http.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(wildcard.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(hostip.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(vtls.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(url.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(sendf.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(strerror.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(slist.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(multi.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(asyn-thread.obj) : error LNK2001: unresolved external symbol __imp___wassert
1>libcurld.lib(strerror.obj) : error LNK2019: unresolved external symbol __imp____sys_nerr referenced in function _Curl_strerror
1>libcurld.lib(cookie.obj) : error LNK2019: unresolved external symbol __imp__fgets referenced in function _get_line
1>libcurld.lib(netrc.obj) : error LNK2001: unresolved external symbol __imp__fgets
1>libcurld.lib(cookie.obj) : error LNK2019: unresolved external symbol __imp__fputs referenced in function _cookie_output
1>libcurld.lib(telnet.obj) : error LNK2019: unresolved external symbol __imp____stdio_common_vsscanf referenced in function _sendsuboption
1>libcurld.lib(rtsp.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(http_proxy.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(http.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(parsedate.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(imap.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(ftp.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(cookie.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(hostip.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(url.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp____stdio_common_vsscanf
1>libcurld.lib(ftp.obj) : error LNK2019: unresolved external symbol __imp__strstr referenced in function _ftp_statemach_act
1>libcurld.lib(tftp.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(digest.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(ftplistparser.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(vtls.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(url.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(http.obj) : error LNK2001: unresolved external symbol __imp__strstr
1>libcurld.lib(vtls.obj) : error LNK2019: unresolved external symbol __imp__fread referenced in function _Curl_pin_peer_pubkey
1>libcurld.lib(url.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurld.lib(transfer.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurld.lib(formdata.obj) : error LNK2001: unresolved external symbol __imp__fread
1>libcurld.lib(warnless.obj) : error LNK2019: unresolved external symbol __imp__read referenced in function _curlx_read
1>OLDNAMES.lib(read.obi) : error LNK2001: unresolved external symbol __imp__read
1>libcurld.lib(warnless.obj) : error LNK2019: unresolved external symbol __imp__write referenced in function _curlx_write
1>OLDNAMES.lib(write.obi) : error LNK2001: unresolved external symbol __imp__write
1>libcurld.lib(curl_threads.obj) : error LNK2019: unresolved external symbol __imp___beginthreadex referenced in function _Curl_thread_create
1>libcurld.lib(file.obj) : error LNK2019: unresolved external symbol __imp__close referenced in function _file_done
1>OLDNAMES.lib(close.obi) : error LNK2001: unresolved external symbol __imp__close
1>libcurld.lib(file.obj) : error LNK2019: unresolved external symbol __imp__open referenced in function _file_connect
1>OLDNAMES.lib(open.obi) : error LNK2001: unresolved external symbol __imp__open
1>libcurld.lib(file.obj) : error LNK2019: unresolved external symbol __imp___fstat64 referenced in function _file_do
1>libcurld.lib(smb.obj) : error LNK2019: unresolved external symbol __imp___getpid referenced in function _smb_format_message
1>libcurld.lib(system_win32.obj) : error LNK2019: unresolved external symbol __imp___mbspbrk referenced in function __tcspbrk
1>libcurld.lib(formdata.obj) : error LNK2019: unresolved external symbol __imp__feof referenced in function _Curl_getformdata
1>libcurld.lib(formdata.obj) : error LNK2019: unresolved external symbol __imp__ferror referenced in function _Curl_getformdata
1>libcurld.lib(formdata.obj) : error LNK2019: unresolved external symbol __imp___stat64 referenced in function _AddFormData
1>MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4

您必须将libcurl编译选项更改为mtd/mt。

您能描述如何构建libcurl吗?

看来您在项目和libcurl中不使用相同版本的C库。您正在使用同一编译器吗?Visual Studio将其称为"平台工具集"。我记得过去汇编了libcurl,但我没有走静态的路线。C库的不匹配似乎是一个问题。当您尝试将此库链接到其他C库的不同版本时,它变得模棱两可,您引用了您所引用的功能。

我刚刚从他们的网站检查了Libcurl捆绑包。您应该打开一个SLN项目curl-7.53.1projectsWindowsVC14。从那里,请确保您选择" lib调试 - [SSL库选择]",并且在两个项目中都使用了同一拱门,例如32位或64位。

我认为仅将单个开关添加到编译器就不够。

我刚刚在Curl网站上看到的东西:

作为一般规则,用静态CRT链接构建DLL是高度的 灰心,在同一应用程序中将CRT混合在一起 不惜一切代价避免。

最新更新