embeddedmz / ftpclient-cpp

C++ client for making FTP requests
MIT License
204 stars 65 forks source link

Error in VS 2022 #56

Open JekSun97 opened 2 weeks ago

JekSun97 commented 2 weeks ago

I built libcurl 8.8.0, connected it to your library, and successfully built ftpclient.lib, now I created a project for testing, connected the library, but when I run it I get the following errors:

1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_slist_append. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_slist_free_all. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_strerror. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_init. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_setopt. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_perform. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_cleanup. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_getinfo. 1>ftpclient.lib(FTPClient.obj) : error LNK2001: unresolved external symbol impcurl_easy_reset. 1>ftpclient.lib(CurlHandle.obj) : error LNK2001: unresolved external symbol impcurl_global_init. 1>ftpclient.lib(CurlHandle.obj) : error LNK2001: unresolved external symbol impcurl_global_cleanup. 1>C:\Users\FireRun\Desktop\ftp\ftp\Release\ftp.exe : fatal error LNK1120: unresolved external elements: 11

For testing I used minimal code:

#include <iostream>
#include "FTP/FTPClient.h"
#pragma comment(lib, "ftpclient.lib")

int main()
{
    embeddedmz::CFTPClient FTPClient([](const std::string& strLogMsg) { std::cout << strLogMsg << std::endl; });
    std::cout << "Hello World!\n";
}
embeddedmz commented 1 week ago

The static library "ftpclient" (or the program "ftp.exe") is not properly linked to the dynamic library (it can also be static) "libcurl", you have a problem in the link parameters for the "release" configuration, I can't help you if I don't have your Visual Studio solution. You can share it with me (via a github repository for example) and I'll try to help you and explain what's wrong.

Another solution is to use vcpkg to manage libcurl (look at README).