File not Found (опять)

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

File not Found (опять)

Сообщение pronto » 12.08.2010 (Чт) 16:18

Здравствуйте!
Возникла проблема аналогичная этой. С небольшой разницей в том, что возникает только при выполнении под студией, а в скомпилированном виде всё нормально. Обнаружено ещё такое странное поведение — при копировании библиотеки в System32 студия не ругается на отсутствие библы, но ни одна её функция не работает... Что делать?
O, sancta simplicitas!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: File not Found (опять)

Сообщение Хакер » 12.08.2010 (Чт) 16:29

Дать аналогичный ответ: «фигня в DllEntryPoint и вообще кривая библиотека»?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: File not Found (опять)

Сообщение pronto » 12.08.2010 (Чт) 16:32

Исправить никак? Ведь вчера всё работало как надо!
Блин!..
O, sancta simplicitas!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: File not Found (опять)

Сообщение Хакер » 12.08.2010 (Чт) 16:33

Воссоздать среду, необходимую для правильного функционирования библиотеки.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: File not Found (опять)

Сообщение pronto » 12.08.2010 (Чт) 16:50

Ага. Распаковал этот тестовый пример из архива. Работает. Что интересно, на разных запусках примера функция, которая возвращает указатель на данные, выдаёт одно и то же число... Этот указатель меняется только после перезапуска студии. Это правильно или какой-то глюк?
O, sancta simplicitas!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: File not Found (опять)

Сообщение jangle » 12.08.2010 (Чт) 16:55

pronto писал(а):Ага. Распаковал этот тестовый пример из архива. Работает. Что интересно, на разных запусках примера функция, которая возвращает указатель на данные, выдаёт одно и то же число... Этот указатель меняется только после перезапуска студии. Это правильно или какой-то глюк?


Правильно. Студия ссылается на один и тот же кусок памяти.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: File not Found (опять)

Сообщение pronto » 12.08.2010 (Чт) 17:00

Спасибо! Уже легче :)
Теперь осталось дождаться критического момента и попытаться его засечь :shock:
ЗЫ Всё-таки остаётся вопрос — почему скомпилированный вариант работает и после «поломки» библиотеки? ?
O, sancta simplicitas!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: File not Found (опять)

Сообщение iGrok » 12.08.2010 (Чт) 17:20

Возможно, студия пытается искать библиотеку где-то в другом месте. И находит. Но не ту.
label:
cli
jmp label

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: File not Found (опять)

Сообщение 1Steps » 13.08.2010 (Пт) 1:28

ЗЫ Всё-таки остаётся вопрос — почему скомпилированный вариант работает и после «поломки» библиотеки? ?
После поломки, студия ждет исправлений и не РЕкомпилирует твой старый вариант.
Удалена за ненадобностью.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: File not Found (опять)

Сообщение pronto » 13.08.2010 (Пт) 13:26

Пока всё работает, продвигаюсь дальше.
Есть в ней функция GetBits(DIB), которая возвращает указатель на данные растра. Этот растр я хочу отобразить на экран функцией StretchDIBits. У StretchDIBits есть параметр lpBits As Any, который принимает, судя по описанию, указатель на данные растра. Если в этот параметр передать результат функции GetBits(DIB), то ничего не происходит — экран остаётся пустым. Я смог обойти эту проблему копированием данных растра в свой массив Canvas(1 To Width, 1 To Height) и указанием его в параметре lpBits. Как «подружить» указатель, возвращаемый GetBits(DIB) и указатель, который ожидает StretchDIBits в параметре lpBits? Просто делать ненужную копию растра очень накладно для оперативы, так как он может занимать до 100 МБ...
O, sancta simplicitas!

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: File not Found (опять)

Сообщение pronto » 14.08.2010 (Сб) 3:02

Ага, изменил объявление функции StretchDIBits&
с
Код: Выделить всё
Declare Function StretchDIBits& Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal dX As Long, ByVal dY As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, [b]lpBits As Any[/b], lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long)

на
Код: Выделить всё
Declare Function StretchDIBits& Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal dX As Long, ByVal dY As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, [b]ByVal lpBits As Long[/b], lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long)

И, вроде бы, такой вариант работает...
Последний раз редактировалось pronto 11.10.2010 (Пн) 16:09, всего редактировалось 1 раз.
O, sancta simplicitas!

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: File not Found (опять)

Сообщение pronto » 14.08.2010 (Сб) 5:09

Доэкспериментировался! :D
Остановка выполнения на ошибке, не рушит студию, но очередной запуск даёт «File not found»!
После нескольких «научных» тыков это залечивается:
1. Файл "Image.dll" переименовывается в "xImage.dll";
2. F5 (File Not Found);
3. Заменить в объявлениях функций "Image.dll" на "xImage.dll";
4. F5 (OK).

О чём это может свидетельствовать? Какие выводы необходимо сделать?
O, sancta simplicitas!


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 39

    TopList