Здравствуйте, уважаемые эксперты. Помогите решить одну проблему: мне нужно вызвать функцию InetIsOffline(она находится в библиотеке Windows url.dll), чтобы определить, подключен компьютер к сети или нет. В начале исходника определяю ее прототип. И кроме того, в параметрах линкера также указываю среди прочих библиотек импорта необходимую библиотеку url.lib. Вроде все правильно. Компиляция исходника проходит нормально, а вот при компоновке я получаю ошибку Linking... Microsoft (R) Incremental Linker Version 6.00.8168 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib url.lib odbc32.lib odbccp32.lib /subsystem:windows /incremental:no "/pdb:Release/Example.pdb" /machine:I386 "/out:Release/Example.ex e"
.ReleaseEXAMPLE.OBJ EXAMPLE.OBJ : error LNK2001: unresolved external symbol "int __cdecl InetIsOffline(unsigned long)" (?InetIsOffline@@YAHK@Z) Release/Example.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. Почему линкер не хочет создавать EXE-файл? Я смотрел MSDN, там написано, что это может происходить при линковке отладочной версии проекта с релизными библиотеками. Я поменял тип проекта с Debug на Release и перекомпилил. Никакого результата, опять эта же ошибка при линковке. В общем, я ниже прилагаю исходник, скажите плиз, что надо подправить, чтобы прога заработала. А если дело не в исходнике, то подскажите, какие параметры компилятора или линкера надо изменить, чтобы заработало. P.S. И еще одна просьба. Если у кого есть Приложения А и Б, Рихтер, 4-е издание Windows для профессионалов, плиз скиньте на мыло vink2002@pisem.net
не могу найти в инете эти приложения. Скачал в архиве Рихтера, а там только 27 глав, а Приложения А и Б отсутствуют почему то, а без них примеры не компилируются. С уважением, Владимир.
Доброе время суток, Vladimir! 1. Попробуй использовать функцию IntenetGetConnectedState из Wininet. 2. Еще можно не использовать импорт: FARPROC iio=GetProcAddress(LoadLibrary("url.dll"),"InetIsOffline"); if (((BOOL (__stdcall*)(DWORD))iio)(0)) MessageBox(NULL, "Computer is offline", "", MB_OK); 3. Полный Рихтер есть на http://anatolix.naumen.ru/ Ответ отправлен: 30.07.2003, 03:53 Отправитель: Marouder Отвечает vitya
Здравствуйте, Vladimir! 1. предлагаю объявить эту функцию, как extern 2. предлагаю использовать LoadLibraty + GetProcAddress Ответ отправлен: 30.07.2003, 09:01 Отправитель: vitya Отвечает Avl2k
Здравствуйте, Vladimir! Не надо определять прототипы для функций, экспортируемых из dll'лек Windows, для этого уже есть стандартные .h-файлы (если Вы посмотрите, то там прописаны необходимые спецификации еxtern "C", __stdcall и др.). Для InetIsOffline включите intshcut.h, укажите линкеру линковаться с url.lib и все должно быть в порядке. С уважением, Avl2k. Ответ отправлен: 30.07.2003, 16:59 Отправитель: Avl2k
Вопрос № 967
Народ короче налобал свой FlaSH ПЛЕЙЕР, теперь надо сделать такую фишку: чтобы файл *.swf в моем плейере МОНА было сохранять как *.exe ,т.е. *.swf +мой плейер. В общем как в стандартном Макромедиавском плейере (Опция Create Projedt),после чего *.swf становится *.exe.
Здравствуйте, Kirya! Проще всего было бы просто взять готовый exe части Вашего плеера и положить .swf как бинарные данные в его ресурсы ф-цией UpdateResource. Проблема в том, что UpdateResource не поддерживется на платформах 95/98/Me :( Таким образом, Вам остается только учить формат PE и делать все ручками... С уважением, Avl2k. Ответ отправлен: 30.07.2003, 17:09 Отправитель: Avl2k
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.