Dev-C++ [проблема линковки]
От: freeloader Россия freeloader.net.ru
Дата: 26.10.06 10:32
Оценка:
Здравствуйте. Решил изучить c++ и сразу же наткнулся на одну проблему. Инструмент в котором я создаю или пытаюсь создать код начинает ругаться. На вкладки Linker выходит список:
c:\documents and settings\freeloader\my documents\dev-c++project\ftpbr\untitled1.o(.text+0x208):untitled1.cpp: undefined reference to `InternetOpenA@20'
c:\documents and settings\freeloader\my documents\dev-c++project\ftpbr\untitled1.o(.text+0x255):untitled1.cpp: undefined reference to `InternetConnectA@32'
c:\documents and settings\freeloader\my documents\dev-c++project\ftpbr\untitled1.o(.text+0x28a):untitled1.cpp: undefined reference to `InternetCloseHandle@4'

заголовочный файл wininet.h приинклудил. Что не так?
На вкладке Compiler никаких проблем не возникает, хотя до нее наверное очередь не доходит.

Заранее благодарен!
Re: Dev-C++ [проблема линковки]
От: np9mi7 Россия  
Дата: 26.10.06 10:38
Оценка:
Здравствуйте, freeloader, Вы писали:

F>c:\documents and settings\freeloader\my documents\dev-c++project\ftpbr\untitled1.o(.text+0x208):untitled1.cpp: undefined reference to `InternetOpenA@20'

F>c:\documents and settings\freeloader\my documents\dev-c++project\ftpbr\untitled1.o(.text+0x255):untitled1.cpp: undefined reference to `InternetConnectA@32'
F>c:\documents and settings\freeloader\my documents\dev-c++project\ftpbr\untitled1.o(.text+0x28a):untitled1.cpp: undefined reference to `InternetCloseHandle@4'

Нужно ещё Wininet.lib линковать;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[2]: Dev-C++ [проблема линковки]
От: freeloader Россия freeloader.net.ru
Дата: 26.10.06 10:48
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>Нужно ещё Wininet.lib линковать;


Как это сделать?
Re[3]: Dev-C++ [проблема линковки]
От: np9mi7 Россия  
Дата: 26.10.06 11:13
Оценка:
Здравствуйте, freeloader, Вы писали:

N>>Нужно ещё Wininet.lib линковать;


F>Как это сделать?


#pragma comment(lib, "Wininet.lib")
, или изучи опции компилятора;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[4]: Dev-C++ [проблема линковки]
От: freeloader Россия freeloader.net.ru
Дата: 26.10.06 11:46
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>
N>#pragma comment(lib, "Wininet.lib")
N>
, или изучи опции компилятора;

код вставил, результатов никаких
Re[5]: Dev-C++ [проблема линковки]
От: np9mi7 Россия  
Дата: 26.10.06 12:12
Оценка:
Здравствуйте, freeloader, Вы писали:

F>код вставил, результатов никаких


Давай полный лог сборки;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re: Dev-C++ [проблема линковки]
От: Аноним  
Дата: 26.10.06 13:14
Оценка:
Внимательно изучи, что вы написали в include — ах. Очень похоже на последствия опечатки в навании какой-то либы.
Re[2]: Dev-C++ [проблема линковки]
От: freeloader Россия freeloader.net.ru
Дата: 26.10.06 21:57
Оценка:
полный лог:
Building resource file...
Compiling files :
C:\DEV-C_~1\Bin\g++ "c:\dev-c++\project\c\ftpbr\untitled1.cpp" -c -s -IC:\DEV-C_~1\Include\ -IC:\DEV-C_~1\Include\G__~1 -IC:\DEV-C_~1\Include\ -LC:\DEV-C_~1\Lib\ -BC:\DEV-C_~1\Bin\
Linking files :
C:\DEV-C_~1\Bin\g++ "c:\dev-c++\project\c\ftpbr\untitled1.o" -o c:\dev-c_~1\project\c\ftpbr\Ftpbr.exe C:\DEV-C_~1\project\c\ftpbr\rsrc.o -s -IC:\DEV-C_~1\Include\ -IC:\DEV-C_~1\Include\G__~1 -IC:\DEV-C_~1\Include\ -LC:\DEV-C_~1\Lib\ -BC:\DEV-C_~1\Bin\

ошибка линковщика:
c:\dev-c++\project\c\ftpbr\untitled1.o(.text+0x208):untitled1.cpp: undefined reference to `InternetOpenA@20'
c:\dev-c++\project\c\ftpbr\untitled1.o(.text+0x255):untitled1.cpp: undefined reference to `InternetConnectA@32'
c:\dev-c++\project\c\ftpbr\untitled1.o(.text+0x28a):untitled1.cpp: undefined reference to `InternetCloseHandle@4'




че делать блин не знаю...

Аноним:
Я весь день долблюсь с этой ошибкой, я уже эти инклуды по тыщи раз проверял, более того я в них и залазил и искал там эти прототипы, все вери вел, компилятор ни слово не говорит, а линкер никак не хочет запускать программу.
Re[3]: Dev-C++ [проблема линковки]
От: Аноним  
Дата: 27.10.06 07:34
Оценка:
Здравствуйте, freeloader, Вы писали:

F>Я весь день долблюсь с этой ошибкой, я уже эти инклуды по тыщи раз проверял, более того я в них и залазил и искал там эти прототипы, все вери вел, компилятор ни слово не говорит, а линкер никак не хочет запускать программу.


Библиотеку wininet подключали? ( -lwininet к опциям)
Ну и чисто эстетическое замечание: что это за имена для файлов untitled1.cpp ?
Re[4]: Dev-C++ [проблема линковки]
От: freeloader Россия freeloader.net.ru
Дата: 27.10.06 08:11
Оценка:
Стало еще веселее. Вчера узнал, что есть более свежая среда, поставил, теперь и компилятор начал ругаться:
Вот что выдает компилятор:
[Linker error] undefined reference to `InternetOpenA@20'
[Linker error] undefined reference to `InternetConnectA@32'
[Linker error] undefined reference to `InternetCloseHandle@4'
ld returned 1 exit status
C:\Dev-Cpp\project\c\ftpbr\5version\Makefile.win [Build Error] [pro.exe] Error 1

А это вылазит в журнале компиляции!:
Компилятор: Default compiler
Building Makefile: "C:\Dev-Cpp\project\c\ftpbr\5version\Makefile.win"
Выполнение make...
make.exe -f "C:\Dev-Cpp\project\c\ftpbr\5version\Makefile.win" all
g++.exe main.o -o "pro.exe" -L"C:/Dev-Cpp/lib"

main.o(.text+0x271):main.cpp: undefined reference to `InternetOpenA@20'
main.o(.text+0x2e1):main.cpp: undefined reference to `InternetConnectA@32'
main.o(.text+0x315):main.cpp: undefined reference to `InternetCloseHandle@4'
collect2: ld returned 1 exit status

make.exe: *** [pro.exe] Error 1

Выполнение завершено

Библиотеку вроде как подключил, как советал np9mi7, таким вот образом, воощем со всеми инклудами, выглядит это так:
#include <cstdlib>
#include <iostream>
///#include <stdio.h>
#include <wininet.h>
#include <string.h>

#pragma comment(lib, "Wininet.lib")

P.S. программа очень маленькая и заключается всего в одном модуле, поэтому мне кажется, такие имена можно допустить.
Re[5]: Dev-C++ [проблема линковки]
От: Аноним  
Дата: 27.10.06 08:50
Оценка:
Здравствуйте, freeloader, Вы писали:

F>P.S. программа очень маленькая и заключается всего в одном модуле, поэтому мне кажется, такие имена можно допустить.


Попробуй подключит не через прагму, а указать в строке компиляции среди прочих параметров через параметр -l

g++ твояпрога.cpp -o твояпрога.exe -lwininet

Если код маленький и несекретный, то может кинешь его сюда?
Re[6]: Dev-C++ [проблема линковки]
От: freeloader Россия freeloader.net.ru
Дата: 27.10.06 10:03
Оценка:
Да какой секрет...

*******************************************************
#include <cstdlib>
#include <iostream>
///#include <stdio.h>
#include <wininet.h>
#include <string.h>

#pragma comment(lib, "Wininet.lib")

using namespace std;

int main(int argc, char *argv[])
{
cout << "FTP server\n"
<< "example: ftp://192.168.55.91/\n";
char szServer[128];
cin.getline(szServer,128);
cout << "\n\nName accaunt of ftp server\n"
<< "example: freeloader\n";
char szName[128];
cin.getline(szName,128);
cout << "\n\nWAITING...\n";

cout << "\n\n\n\n";
cout << szServer << "\n\n";
cout << szName << "\n\n";

HINTERNET hInternetFile=0;
HINTERNET hInternet = InternetOpenA (TEXT("Microsoft Internet Explorer"),
INTERNET_OPEN_TYPE_DIRECT,
NULL, 0, 0);
if(!hInternet){
cout << "error!!!";
}
hInternetFile = InternetConnectA(hInternet,
szServer,
INTERNET_DEFAULT_FTP_PORT,
szName,
"Password",
INTERNET_SERVICE_FTP,
0,
(DWORD)0);
if(!hInternetFile){
///cout << "go start";
InternetCloseHandle(hInternetFile);
}

system("PAUSE");
return EXIT_SUCCESS;
}

*************************************************
Re[7]: Dev-C++ [проблема линковки]
От: Аноним  
Дата: 27.10.06 11:13
Оценка:
Здравствуйте, freeloader, Вы писали:

F>Да какой секрет...


Успешно откомпилировалась и даже вроде отработала.

Компилировал следующей строчкой:

g++ untitled1.cpp -o untitled1.exe -lwininet

Наличие прагмы похоже ни на что не влияет, я ее закомментировал и всё равно всё прошло нормально. Правда я использовал не Bloodshed, а чистый mingw, но компилятор-то всё-равно один и тотже, Bloodshed -- просто IDE над mingw.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.