![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Программа с использованием сокетов. Компилируется, линкуется, а при попытке запустить, сообщает:
Точка входа в процедуру inet_pton не найдена в библиотеке ws2_32.dll Т.е. Я так понимаю, что сама длл-ка есть, но в ней нет этого экспорта. Почему же он есть в библиотеке экспорта? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
REZiaMIX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
inet_addr не тоже самое?
-------------------- ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
http://msdn.microsoft.com/en-us/library/cc805844(VS.85).aspx
хочу обратить внимание на это
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
azesmcar, Гм... А что вместо нее использовать? inet_addr как-то не то
![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
andrew_121
смотря что нужно ![]() это разные функции. inet_addr - конвертирует в IN_ADDR, плюс он не работает с Ipv6. Можно самому написать конвертер (или еще проще - скопировать из сорсов юникса) http://www.koders.com/c/fid74A647B73741DDD...84E8740D43.aspx http://www.samba.org/rsync/doxygen/head/in..._8c-source.html вот сорс-код Это сообщение отредактировал(а) azesmcar - 29.5.2009, 17:23 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
azesmcar, Спасибо! Ща попробую.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Не помогло.
В моем коде эта функция используется всего однажды. Я ее переименовал, и подсунул из сорца. Возможно она используется другими функциями из Sockets2. Какие еще предложения? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
REZiaMIX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
попробовать скачать библиотеку winsock2.dll от висты , вручную загрузить(getprocaddress) из нее функцию и переопределить дефайном(или перехватить).
Извращенно , но может прокатит :В библиотека называеца ws2_32.dll Это сообщение отредактировал(а) REZiaMIX - 29.5.2009, 19:17 -------------------- ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Я так и сделал. Скачал. Положил в каталог с программой. Но нет, не хочет ее использовать.
Вот думаю подменить стандартную виндовскую на эту, хз что произойдет ![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
REZiaMIX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
а если сделать FreeLibrary , а потом LoadLibrary с полным путем? -------------------- ![]() |
|||
|
||||
REZiaMIX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Можно сделать LoadLibrary правильной DLL;
потом обявить самому эту функцию, и GetProcAddress(...). Тогда 100% функция будет что надо ,но не факт что результат в общем будет правильным, и не факт что функция из dll висты заработает По хорошему - тут надо искать другое , не каверзное решение. -------------------- ![]() |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
подробнее пожалуйста. Что должно было произойти, и что произошло.
лучше не надо а вообще - подробнее о задаче, люди до появления висты писали программы под виндоуз и не жаловались на отсутствие этой функции. Почему она вдруг стала так жизненно важна? |
||||
|
|||||
andrew_121 |
|
||||||||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Перегрузился в Лин, подменил на вистовскую версию этой либы. Экран смерти. Вернул все как прежде.
Можно попробовать. Но я полагаю, что ХР версия этой длл-ки статически подгружается. Получится ли ее выгрузить...надо пробовать. И это пробовал. Но как я понял, эту же функцию, наверное, используют другие функции из Socks2. Я выше писал. Цитирую:
Было:
Последовал вашему совету:
Все так и осталось. Уже понял))) Согласен. Программа в Лине работает. Нужно чтоб работала в Винде. Вот ![]() -------------------- Удалил аккаунт. Прощайте! |
||||||||||
|
|||||||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Было, не то что я спрашивал
хотя тут я ответ получил ![]() Я собственно не понял, в чем проблема была? скопировал из сорсов линукса, 1. функция откомпилировалась? Да/Нет. 2. тестировалась отдельно от проекта? Да/Нет. Это сообщение отредактировал(а) azesmcar - 29.5.2009, 20:33 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
1. Да. 2. Да. Но при запуске все равно сообщает: Точка входа в процедуру inet_pton не найдена в библиотеке ws2_32.dll -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Следовательно в программе используется эта функция (не написанная, а именно виндоузовская), либо ее использует другая библиотека которую используешь ты. 1. Надо проверить, а точно ли она не используется в коде. Переименовать функцию и все ее вызовы, откомпилировать, проверить. 2. Если все еще не работает, проверить под дебагером кто использует функцию. |
|||
|
||||
andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Во всем проекте, всего однажды.
Как? Чё дебагить то? -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Программу свою http://www.ollydbg.de/ Это конечно в том случае, если логически вычислить виновника не получается. Это сообщение отредактировал(а) azesmcar - 30.5.2009, 19:38 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
azesmcar, Так, минуточку! В моем коде эта функция используется всего однажды. Я ее заменил сорцом. Значит ее мне дебагить ненужно.
Так, вы что, предлагаете дебагить до тех пор пока я не встречу сию функцию? И что мне это даст? Я же не могу ее в длл-ке заменить. Или...? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Если в своем коде ты ее заменил, значит ошибка выдаватся не должна. А если выдается - значит либо не везде заменил, либо используешь другую библитеку, которая использует эту функцию..Кто-то же на не ссылается что ошибка вылетает. Для начала я бы порекомендовал сделать полный ребилд проекта. Если не поможет, искать дебагером виновника. Т.е. запустить под дебагером и посмотреть, кто именно требует эту функцию. Сперва вычислить, а потом думать как исправить. |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Буду пробовать...
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
REZiaMIX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
ws2_32.dll линкуется динамически(и для каждого процесса она "своя").
я бы попробовал перехватить ее и заменить на свою. Должно поидее прокатить. т.е. DWORD addr = (DWORD)&inet_pton; Самое простое - заменить первые 5 байт , на jump на свою функцию. Да и вообще , дал бы код программы где используется эта функция - наверняка ее очень легко заменить аналогом. Врядли winsock2 будет её использовать без указаний извне ![]() -------------------- ![]() |
|||
|
||||
andrew_121 |
|
||||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Подробней пожалуйста....
Вот:
-------------------- Удалил аккаунт. Прощайте! |
||||||
|
|||||||
REZiaMIX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Аналогичный код , + разрешение dns если адрес является не IP , а именем домена. Используется inet_addr. repsys::report - функция лог ошибок. Думаю ошибка возникает в коде не по причине inet_pton. Какого рода вообще ошибка , не проще ли пройтись дебагом по программе , и посмотреть где что и как? Думаю не идет коннект?!?! (это моя старая функция , есть баг когда два раза вызывается gethostbyname, исправить просто булевой переменной где надо) inet_addr вроде отличается только тем , что не справиться с ipv6(пока еще рано о нем думать по моему мнению). Добавлено @ 00:09 Да и... Другими функциями из sockets2 (win xp) использоваться она ну никак не будет , если ее нету! Так что надо искать ошибку в другом месте. Это сообщение отредактировал(а) REZiaMIX - 1.6.2009, 00:10 -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |