Почему программа не видит библиотеку?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Почему программа не видит библиотеку?

Сообщение natcap » 04.06.2004 (Пт) 16:39

Нашла код как открывать PNG при помощи gdiplus. Делаю все как в примере: модуль вообще из примера, в форме анонсировала, библиотека лежит (собственно в пример я ее из своего же проекта клала) - результат - ОШИБКА, файл gdiplus.dll не найден :((( Как и куда его пнуть чтобы нашелся????
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.06.2004 (Пт) 16:43

попробуй кинуть в системную директорию виндов , типа c:\winnt\system32

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 16:50

НЕНАВИЖУ МАСТДАЙ!!!!

Ну вот почему для одного проекта глубоко параллельно где библиотека, а для лежащего в соседней папке - нет :((((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 18:38

Конкретно для gdiplus.dll эта проблема особенно остра. Теоретически, библа должна лежать в %SystemRoot% (Windows\System для мастдая, Winnt\System32 для NT), и все должны ее видеть. Но практика показывает, что лежать с сисруте она может только под ХР, а уже на винтукее ее нужно класть в один каталог с компонентом, ее использующим. Юзаешь прямо из ехе-шника - клади с ним в одну папку. Так вот...

З.Ы. С 2003 не экспериментировал, как там - не знаю.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 18:41

Так в том то и дурость, что когда огна была в одном котологе ее программа НЕ ВИДЕЛА!!! А положила в систем - увидела :((( Маразм да и только, т.к. другой проект, по которому я с разбираюсь, что и как делать, заработала когда я ее в одну папку положила...
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.06.2004 (Пт) 18:44

Ненавидят МАСТДАЙ обычно глупые, недалекие и ленивые люди :?

Но так как, дело неглупых людей просвящать первых, займусь и я этим делом...

Для того чтобы можно было юзать где угодно, библиотеку нужно зарегистрировать в системе. Сами подумайте, на винте ...цдать тысяч файлов... Не будет же винда все перебирать... :P

Код: Выделить всё
regsvr32 pathtofile\filename


Идем в Start-Run и запускаем вышеописанную команду, и вуаля! :wink:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.06.2004 (Пт) 18:47

Кстати, не надо "очеловечивать" компьютер... :geek:

Маразма у него не бывает...
Другое дело у пользователя маразм может быть :)

Надо искать причины странного поведения, обычно программисты этим и занимаются :D
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 18:49

А теперь еще раз для слишком умных:
есть 2 проекта, один в папке 1, другой в папке 2
в обеих папках есть эта библиотека, 1 проект работает нормально, 2 орет как укушенный.
2-ому потребовалось, чтобы библиотеку в систем скопировали.

Да, библиотека давно зарегистрена была, т.к. она ИНСТАЛИРУЕТСЯ с другим проектом! т.е. в системе на нее ссылки были!

Так что не слишком умничайте, это именно закидоны мастдая :(((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 18:51

А вот тут-то вы, батенька, и лажанулись. Кто вам сказал, что gdiplus.dll - ActiveX СОМ-объект? В том-то вся и проблема, что не регится она нифига, иначе все было бы не слишком просто, а... в общем, этого трэда не было бы. :)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 18:55

2 natcap: Поищи разницу в использовании этой библы в своих проектах. Ты юзаешь ее напрямую, ее юзают какие-то контролы, какие-то библы, ты в ран-тайме вызываешь для нее LoadLibrary() - в чем разница в плане использования? Вот и половина ответа будет...

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 18:55

Кстати, специально для очень умных.... так, тема для размышлений... мои вопросы в 99 случаях из 100 простыми бывают только на первый взгляд и для очень самоуверенных людей ;) Как вскрытее покказывает, так просто они никогда не решаются :P
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.06.2004 (Пт) 18:56

Ennor писал(а):А вот тут-то вы, батенька, и лажанулись. Кто вам сказал, что gdiplus.dll - ActiveX СОМ-объект? В том-то вся и проблема, что не регится она нифига, иначе все было бы не слишком просто, а... в общем, этого трэда не было бы. :)


Я не "лажанулся"... :? Да, и судить позвольте мне сударь :evil:

То как автор топика описала ситуацию, дозволяет предложенный мной способ решения. А то что
netcap писал(а):Ну вот почему для одного проекта глубоко параллельно где библиотека, а для лежащего в соседней папке - нет (((


Извините, можно заключить, что автор не совсем разбирается в технологии.

А теперь вопрос автору:
Что за "разные папки"? Проекты запускаются одновременно? Или дело в том, что библиотека не выгружается из памяти? Перегружаться пробовала?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 18:57

Ennor писал(а):2 natcap: Поищи разницу в использовании этой библы в своих проектах. Ты юзаешь ее напрямую, ее юзают какие-то контролы, какие-то библы, ты в ран-тайме вызываешь для нее LoadLibrary() - в чем разница в плане использования? Вот и половина ответа будет...


Так если бы была разница, то поста бы не было :))) Я же все же не совсем дура, как некоторым кажется :)))
Все один в один, модуль взят из проекта - примера, вызов такой же, т.е. все один в один, получено копированием кода и модуля.
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.06.2004 (Пт) 18:58

natcap писал(а):Кстати, специально для очень умных.... Как вскрытее покказывает, так просто они никогда не решаются :P


Решается все :?
Спасибо за такое внимание к моей скромной персоне. Я рад, что мои знания оцениваются по достоинству 8)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.06.2004 (Пт) 19:01

natcap писал(а):Я же все же не совсем дура, как некоторым кажется :)))


Не нужно злорадствовать, это проще всего...
А вот признать свою ошибку это уже потруднее
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 19:03

FAKK2 писал(а):о, а... в общем, этого трэда не было бы. :)


Я не "лажанулся"... :? Да, и судить позвольте мне сударь :evil:
[/quote]

Лажанулся - лажанулся :P

FAKK2 писал(а):То как автор топика описала ситуацию, дозволяет предложенный мной способ решения. А то что
netcap писал(а):Ну вот почему для одного проекта глубоко параллельно где библиотека, а для лежащего в соседней папке - нет (((


Извините, можно заключить, что автор не совсем разбирается в технологии.

А теперь вопрос автору:
Что за "разные папки"? Проекты запускаются одновременно? Или дело в том, что библиотека не выгружается из памяти? Перегружаться пробовала?


Некорректоно написала: параллельно в смысле что без разницы, в систетем библиотека или в своей родной.
Папки C:\1 b C:\2
проекты нормально запускаются одновременно, из памяти РАЗУМЕЕТСЯ все выгружается.
Да собственно и работает уже все, вопрос почему они в разных местах библиотеку искали????
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 19:04

FAKK2 писал(а):...
Код: Выделить всё
regsvr32 pathtofile\filename

...

Ну так попробовал бы сам это выполнить, что ли :D . Так, для разнообразия. Ну или хотя бы в Dependency Walker экспорт посмотреть. Я ж ведь просто так говорить не буду...

Собственно, по делу. Копировался модуль, верно? Ну а теперь скопируй, для пробы, всю папку - одну и вторую, в другое место. Если, конечно, у тебя там ActiveX-ов нет. Посмотрим, что система скажет на этот абсолютно тупой шаг.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.06.2004 (Пт) 19:08

Да её мое блин! :evil: :evil: :evil:

Откуда я нах знал что это ActiveX модуль???
Из описания данного автором этого явно не видно!
А поэтому на основе тех скудных фактов дал то, что посчитал возможной проблемой!

А это ваще наглеж, блин!!
netcap писал(а):Лажанулся - лажанулся

Какое блин твое право что либо утверждать?!
Ты за советом пришла?!?! Ты его и получила!

Ёпрс-т!!! :evil: :twisted:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 19:11

FAKK2 писал(а):Решается все :?


А некто и не говорит, что не решается, решается, но более сложно чем может показаться

FAKK2 писал(а):Не нужно злорадствовать, это проще всего...
А вот признать свою ошибку это уже потруднее


Так нету ошибки то, есть желание разобраться, почему такая фигня происходит

Ennor писал(а):Собственно, по делу. Копировался модуль, верно? Ну а теперь скопируй, для пробы, всю папку - одну и вторую, в другое место. Если, конечно, у тебя там ActiveX-ов нет. Посмотрим, что система скажет на этот абсолютно тупой шаг.


А ничего он не скажет :))) (специально проверила, хотя копировала уже эту папку, даже переносила)
Там в папке только форма, модуль, файл проекта и библиотека, мною же туда положенная :)))
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 19:20

В таком случае придется собирать статистику на разных машинах. Ну, и изучать первоисточнки - MSDN там, и все такое. Подозреваю, что ты права - твои вопросы действительно не так просты. И в данном случае, скорее всего, ответ будет найден случайно. Остается только внимательно следить, чтоб его не проморгать.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 04.06.2004 (Пт) 19:23

Ну вот сегодня получу статистику с 98 виндов, первого пня, в воскресенье с Ме, 1000 атлона, (сейчас 2000про) вот и посмеемся... :) Но я почти уверена, что это винда закидоны устраивает и в дистрибутив мне надо будет прописывать в папку и в систему.

З.Ы. А по поводу моих вопросов, мой друг последнее время не заходит со мной в магазины техники, когда я что-то новое себе выбираю - иначе у него сразу истерика начинается глядя на продавцов, точнее на их глаза, когда я им вопросы задаю - они от меня столько нового узнают... ;)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 04.06.2004 (Пт) 19:43

А все из=за того, что вопрос толклом не написали..... Я ведь тоже хотел посоветовать зарегить библу, а потом сработало чуство самосохранения :D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2004 (Сб) 5:26

Да, какой-то злой FAKK2 сегодня... Не идёт ему звание на пользу почему-то...

Наташа :)
Библиотека ищется программой в следующем порядке:
  • The directory from which the application loaded.
  • The current directory.
  • The system directory. Use the GetSystemDirectory function to get the path of this directory.
  • The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.

    Windows Me/98/95: This directory does not exist.
  • The Windows directory.
  • The directories that are listed in the PATH environment variable.


А что касается закидона, то он состоит в следующем. Если открыть проект через меню Open, то библиотека, лежащая в папке проекта, не будет найдена. Если же открыть проект даблкликом по нему (с запуском нового экземпляра IDE), то библиотека будет найдена. Потому что во втором случае рабочий каталог среды (а процесс создаёт именно среда) совпадает с рабочим каталогом приложения, а в первом случае - совсем не обязательно (хотя случайно может). На эти грабельки я хорошо понаступал, когда писал вызывалку asm-функций :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 05.06.2004 (Сб) 12:38

GSerg, СПАСИБО :))) Теперь поняла и осознала :))))) Как всегда все толком объяснил :)))

А FAKK2 не злой, он хам :(((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 05.06.2004 (Сб) 12:54

natcap писал(а):А FAKK2 не злой, он хам :(((


Злой злой :evil:

А мнение оставь при себе :twisted:
Его высказывать никто не просил :!:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 05.06.2004 (Сб) 15:57

2 GSerg: С проектом ладно, а от чего в таком случае будет зависеть поведение ехе-шника? У меня самого опыта с этой библой мало, но как-то пришлось использовать самописный ATL-контрол, ее юзавший. Так там только бубна не хватало, для полноты картины...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.06.2004 (Вс) 4:00

Экзешник находит в своём каталоге. Во всяком случае у меня всегда.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.06.2004 (Пн) 12:31

В таком случае, полагаю, имеет смысл положить эту библу в корневой каталог VB и забыть про разницу в способах открытия проекта, как страшный сон...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 07.06.2004 (Пн) 13:06

Инфа:
***************************************************
GDIPLUS работает в XP SP1 или Server.NET
****************************************************
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 07.06.2004 (Пн) 13:18

Почти в тему :D Вот еще по регистрации :), может кому и пригодица:
Код: Выделить всё
Регистрация dll- и ocx-файлов

Если вам часто приходится работать с ocx-файлами (а также с dll-файлами), которые требуют регистрации в реестре с помощью REGSVR.EXE, то будет гораздо удобнее внести соответствующую запись в реестр, чем каждый раз использовать командную строку для каждого файла. Создайте раздел
HKEY_CLASSES_ROOT\ocxfile\Shell\Регистрация\command и присвойте строковому параметру по умолчанию значение regsvr32.exe \"%1\". Аналогично создайте дополнительную запись, снимающую регистрацию:
HKEY_CLASSES_ROOT\ocxfile\Shell\Конец регистрации\command
@="regsvr32.exe /u \"%1\""
Тоже самое нужно проделать и в разделе dllfile

Теперь при нажатии правой кнопкой мыши на файле, вы увидите команду Регистрация, которая выполнит за вас необходимую работу.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 4

    TopList