why? link error...

this is the code:

#include "stdafx.h"
#include "wininet.h"

wchar_t *lpszAgent;
wchar_t *server = L"aaaa.t35.com";
wchar_t *username = L"aaaaaaaa.t35.com";
wchar_t *password = L"gaaaaa";
wchar_t upFileName[] = L"test.txt";
wchar_t dir[] = L"test";
HINTERNET hInternet;
HINTERNET ftp;

void upload(void);



int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
upload();
return 1;
}

void upload()
{



hInternet = InternetOpen( NULL, 1, NULL , NULL,1);

ftp = InternetConnect(hInternet, server,21, username, password, 1,1,1);
FtpCreateDirectory( ftp, dir );
FtpSetCurrentDirectory(ftp, dir);

FtpPutFile( ftp, upFileName,upFileName,2, NULL);

InternetCloseHandle(ftp);
InternetCloseHandle( hInternet);


}

but i get these error no matter i tried in many computer (which installs both Visual studio 98 and Visual studio 2005), i dont' know why can't any one help me



Error 7 error LNK2019: unresolved external symbol __imp__InternetCloseHandle@4 referenced in function "void __cdecl upload(void)" ( upload@@YAXXZ) et.obj

Error 8 error LNK2019: unresolved external symbol __imp__FtpPutFileW@20 referenced in function "void __cdecl upload(void)" ( upload@@YAXXZ) et.obj

Error 9 error LNK2019: unresolved external symbol __imp__FtpSetCurrentDirectoryW@8 referenced in function "void __cdecl upload(void)" ( upload@@YAXXZ) et.obj

Error 10 error LNK2019: unresolved external symbol __imp__FtpCreateDirectoryW@8 referenced in function "void __cdecl upload(void)" ( upload@@YAXXZ) et.obj

Error 11 error LNK2019: unresolved external symbol __imp__InternetConnectW@32 referenced in function "void __cdecl upload(void)" ( upload@@YAXXZ) et.obj

Error 12 error LNK2019: unresolved external symbol __imp__InternetOpenW@20 referenced in function "void __cdecl upload(void)" ( upload@@YAXXZ) et.obj

Error 13 fatal error LNK1120: 6 unresolved externals D:\My Documents\Visual Studio 2005\Projects\et\Debug\et.exe 1



Answer this question

why? link error...

  • Al1234511234

    Hi,
    you receive that error because when the compiler is linking (generating the executable file), all the intermediate files (objects), it will need the "code" for that function(s). Normally when you use external functions/objects to your project, you'll need to link with a library, a .lib file. In this case you need to link (at least) with wininet.lib to resolve those errors.

    When you don't know which library you have to link, search MSDN (if you're using a windows library). Check this page: http://msdn.microsoft.com/library/default.asp url=/library/en-us/wininet/wininet/internetopen.asp

    At the end you'll find:

    Requirements:

    ...

    Library

    Use Wininet.lib.

    DLL Requires Wininet.dll.



  • Jabbabroadley

    I think you have to add a library to your project configurations. Open the Properties dialog of your project and go to Linker --> Input --> Additional Dependencies fiels. Type here "Wininet.lib" (use space as separator, if there are other items). Repeat this for Debug and Release configurations. Then try to build the project.

    The libraries and headers you need usually are described in the documentation.

    Hope it helps.


  • why? link error...