Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: VB 6 и DLL  (Прочитано 13061 раз)
0 Пользователей и 1 Гость смотрят эту тему.
negr
Гость
« : 08-11-2006 17:57 » 

есть программа на VB 6, которая вызывает функции из DLL, созданной в Builder С++ 6.
соответственно в проекте на VB строчка:
Код:
Private Declare Function Sum Lib "mydll.dll" (ByVal x As Integer, ByVal y As Integer) As Integer
на компе, на котором это дело компилировалось все работает нормально,
далее переписываю .exe проекта на VB и длл-ку на другую машину  - при запуске получаю ошибку "file not found". с чем это может быть связано? как можно исправить?
пробовал прописывать и полный путь к длл-ке - та же ошибка.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 08-11-2006 18:05 » 

negr, попробуй подложить dll в директорию с exe (или ты непосредственно vb вызываешь?).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
kroum
Интересующийся

ua
Offline Offline

« Ответ #2 : 08-11-2006 20:26 » 

А где dll-ка лежит на новой машине?
Попробуй либо прописать путь к этой папке в path переменных окружения Windows, либо помести ее в папку, которая уже прописана там. ([%windows%]\system32\ например)
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 08-11-2006 21:29 » 

скорее всего не находится файл (может этоо другая длл), от которой зависит данная длл. В этом случае тоже происходит завершение с ошибкой 2. Проверь свою ДЛЛ и ЕХЕ depends.exe. Она тебе сразу покажет, чего не хватает.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
negr
Гость
« Ответ #4 : 09-11-2006 16:17 » 

2 Джон
а, если моя длл зависит от другой (которой нет) ошибка будет об отсутствии моей длл?
в директорию пробовал подкладывать - тоже не получается...
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 09-11-2006 23:56 » 

Хммм, в ошибке не указывается какая именно ДЛЛ отсутствует. Просто выставляется код ошибки 2 - файл не найден.
Ситуация такая, например у тебя есть прога 1.ехе, для работы которой нужна 2.dll. Эта библиотека в свою очередь зависит от некой 3.dll, но для тебя это остаётся прозрачным. Скажем так, ты не вдаваясь в подробности откомпилил 2.dll, а 3.dll находится на рабочем компе в известном месте (системные папки, папка среды разработки и тд). Ты видишь на рабочем компе два файла - 1.ехе и 2.dll и всё замечательно работает. Потом ты переносишь эти два файла (всё ведь работает!) на другой комп, но на нём нет 3.dll. И показываемая ошибка о не найденом файле сводит тебя с ума.
Не заморачивайся, если ты пользуешься какой-нить средой разработки, то не всегда можешь сразу сказать, от чего зависит та или иная библиотека или ехе-шник. Уж тем более, если не ты автор этой самой ДЛЛ. Для этого есть специальные инструменты, которые показывают такие зависимости. Например упомянутая мною depends.exe, она входит в комплект утилиток VS6. Она не только показывает зависимые ДЛЛ, но ещё и проверяет их наличие. Более того, если даже неличие подтверждено, будет проверено, а все ли необходимые твоему модулю ф-ции находятся в данном экземпляре ДЛЛ.
Например под виндой некоторые модули называются абсолютно одинаково - advapi32.dll, но это ещё не значит, что эти ДЛЛ совместимы между 9х и NT платформами. Те проще говоря. ДЛЛ будет найдена, но у тебя прога будет вылетать из-за несовместимости. В этом случае depends покажет, что те или иные ф-ции отсутствуют.
Собственно говоря, всё, что тебе надо сделать, это на той системе где твоя прога не работает, запустить depends.exe и перетащить в неё твой экзешник. Сразу увидишь какой именно ДЛЛ не хватает.
« Последнее редактирование: 09-11-2006 23:58 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
negr
Гость
« Ответ #6 : 10-11-2006 18:40 » new

2 Джон
так и сделал - все сразу встало по местам! спасибо.
только оказалось, что и на том компе, на котором все это программировалось библиотеки тоже не оказалось (а именно MSJAVA.DLL), и все работало...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines