Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 13:13   #1
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
Вопрос не вызываются функции wininet'a

Здравствуйте, я решил написать свою первую dll для связи с интернетом, но у меня в "Visual C++ 2008 Express" не оказалось файла "wininet.h". Я его скопировал из среды "DevC++", но теперь возникают ошибки такого вида:

error LNK2001: неразрешенный внешний символ "_InternetOpenW@20"
error LNK2001: неразрешенный внешний символ "_InternetConnectW@32"
error LNK2001: неразрешенный внешний символ "_HttpOpenRequestW@32"
error LNK2001: неразрешенный внешний символ "_HttpSendRequestW@20"
error LNK2001: неразрешенный внешний символ "_InternetReadFile@16"
error LNK2001: неразрешенный внешний символ "_InternetCloseHandle@4"

Пробовал писать эту dll в среде DevC++, но появляются тоже такие же ошибки

Вот код функции:

#include "stdafx.h"
#include "wininet.h"
#define EXPFUNC __declspec(dllexport)

EXPFUNC bool __stdcall Function1(int argc, char* argv[])
{
bool ok = false;

// инициализируем WinInet
HINTERNET hInternet = ::InternetOpen(
TEXT("Function1"), INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0);

if (hInternet != NULL) {
// открываем HTTP сессию
HINTERNET hConnect = ::InternetConnect(
hInternet, TEXT("http://www.site.com/page1.php?par1=abc&par2=argc"), INTERNET_DEFAULT_HTTP_PORT,
NULL,
NULL, INTERNET_SERVICE_HTTP,
0,
0);

if (hConnect != NULL) {
// открываем запрос
HINTERNET hRequest = ::HttpOpenRequest(
hConnect,
TEXT("GET"), TEXT("object1.asp"),
NULL,
NULL,
0, INTERNET_FLAG_KEEP_CONNECTION,
0);

if (hRequest != NULL) {
// посылаем запрос
BOOL bSend = ::HttpSendRequest(
hRequest,
TEXT("Text"),
4,
argv,
sizeof(argv)-1);

if (bSend) {
// создаём выходной файл
HANDLE hFile = ::CreateFile(
TEXT("data.txt"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile)
for (; {
// читаем данные
char szData[4096];
DWORD dwBytesRead,
dwBytesWritten;
BOOL bRead = ::InternetReadFile(
hRequest,
szData,
sizeof(szData)-1,
&dwBytesRead);

// выход из цикла при ошибке или завершении
if (bRead == FALSE || dwBytesRead == 0) break;

// сохраняем результат
szData[dwBytesRead] = 0;
WriteFile(hFile,
szData,
dwBytesRead,
&dwBytesWritten,
NULL);

ok = true;
}
}
::InternetCloseHandle(hRequest); // закрываем запрос
}
::InternetCloseHandle(hConnect); // закрываем сессию
}
::InternetCloseHandle(hInternet); // закрываем WinInet
}

return ok;
}

Подскажите, как можно решить эту проблемку.
Заранее благодарен.
Юрий90 вне форума Ответить с цитированием
Старый 11.10.2011, 15:04   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Юрий90

возникают ошибки такого вида:

error LNK2001: неразрешенный внешний символ "_InternetOpenW@20"
error LNK2001: неразрешенный внешний символ "_InternetConnectW@32"
error LNK2001: неразрешенный внешний символ "_HttpOpenRequestW@32"
error LNK2001: неразрешенный внешний символ "_HttpSendRequestW@20"
error LNK2001: неразрешенный внешний символ "_InternetReadFile@16"
error LNK2001: неразрешенный внешний символ "_InternetCloseHandle@4"

Подскажите, как можно решить эту проблемку.


подключить к проекту библиотеку Wininet.lib
Rififi вне форума Ответить с цитированием
Старый 11.10.2011, 17:25   #3
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
Юрий90

возникают ошибки такого вида:

error LNK2001: неразрешенный внешний символ "_InternetOpenW@20"
error LNK2001: неразрешенный внешний символ "_InternetConnectW@32"
error LNK2001: неразрешенный внешний символ "_HttpOpenRequestW@32"
error LNK2001: неразрешенный внешний символ "_HttpSendRequestW@20"
error LNK2001: неразрешенный внешний символ "_InternetReadFile@16"
error LNK2001: неразрешенный внешний символ "_InternetCloseHandle@4"

Подскажите, как можно решить эту проблемку.


подключить к проекту библиотеку Wininet.lib
А не подскажете где ее взять?

PS Извините за тупость.
Юрий90 вне форума Ответить с цитированием
Старый 12.10.2011, 10:50   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

-lwininet в опции компилятора добавьте
p51x вне форума Ответить с цитированием
Старый 12.10.2011, 22:57   #5
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
Радость

Цитата:
Сообщение от p51x Посмотреть сообщение
-lwininet в опции компилятора добавьте
Большое спасибо!!! Теперь все работает!
Вот оно, программистское счастье!!!
Юрий90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обращаться к Checkbox, если они вызываются программно??? 555Ksenia555 Microsoft Office Excel 1 24.07.2011 15:05
Как вызываются конструкторы объектов при наследовании? TwiX Общие вопросы C/C++ 10 17.11.2010 13:59
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07