Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Cpp - WinInet (Nie można skompilować)

06 Jun 2013 18:02 1434 4
  • Level 17  
    Witam :) Od dłuższego czasu poszukuję prostego sposobu na połączenie jednego z moich programów z moim serwerem FTP. Chciałem znaleźć jakiś gotowy skrypt i zmodyfikować go do swoich potrzeb, jak się domyślałem wygooglać można przynajmniej kilkanaście gotowych skryptów. Jednak nigdy nie jest za łatwo, znalazłem i zdecydowałem się na skrypt napisany z użyciem WinInit:
    Code: cpp
    Log in, to see the code


    Skrypt jest prosty i przejrzysty, taki jak potrzebuję jednak kompilator (Dev-C++) cały czas atakuje mnie masą błędów i nie wiem jak z tym sobie poradzić:
    Code:
    C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o   ftp.cpp:(.text+0x40): undefined reference to `InternetAttemptConnect@4'
    
    C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o   ftp.cpp:(.text+0x9d): undefined reference to `InternetOpenA@20'
    C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o   ftp.cpp:(.text+0x11e): undefined reference to `InternetConnectA@32'
    C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o   ftp.cpp:(.text+0x167): undefined reference to `FtpGetFileA@28'
    C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o   ftp.cpp:(.text+0x17e): undefined reference to `InternetCloseHandle@4'
    C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o   ftp.cpp:(.text+0x18c): undefined reference to `InternetCloseHandle@4'
    d:\programy\dev-cpp\mingw32\mingw32\bin\ld.exe   C:\Users\Eufor\AppData\Local\Temp\ccXPIjN5.o: bad reloc address 0x0 in section `.ctors'
    d:\programy\dev-cpp\mingw32\mingw32\bin\ld.exe   final link failed: Invalid operation
    C:\Users\Eufor\Desktop\collect2.exe   [Error] ld returned 1 exit status


    Potrafi to ktoś naprawić? Ewentualnie może ktoś ma jakiś podobny działający skrypt :) A przy okazji mam jeszcze jedno pytanko, dlaczego biblioteka WinInet jest ładowana w taki sposób: #pragma comment (lib, "Wininet.lib")
    A nie poprzez #include ? To tylko tak przy okazji bo pierwszy raz spotkałem się z takim zapisem :)
  • Level 25  
    #pragma comment(lib, ...) służy do linkowania i kompilator nie ma z tym nic wspólnego (#include ... dołącza w danym miejscu inny plik). Po drugie: ten zapis działa tylko na MSVS. Musisz dołączyć tę bibliotekę w opcjach projektu (zapewne w dziale poświęconym linkowaniu). Niestety nie mam tegoż muzealnego IDE więc nie powiem dokładnie gdzie to jest.
  • Level 17  
    Dodałem plik wininet.lib do konsolidatora w projekcie i większość błędów znikło jednak dalej wywala mi takie coś:

    Code:
    D:\Programy\Dev-Cpp\MinGW32\lib\libmingw32.a(main.o)   main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
    
    C:\Users\Eufor\Desktop\collect2.exe   [Error] ld returned 1 exit status
    26      C:\Users\Eufor\Desktop\Makefile.win   recipe for target 'Projekt1.exe' failed


    Może wiesz o co chodzi?
  • Level 25  
    No wiem, nie masz funkcji main/WinMain.
  • Level 17  
    Dzięki za pomoc.