Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

вызовDelphi-DLL из VB - File not found?   Найти похожие ветки 

 
Akni ©   (2006-12-22 11:34) [0]

Добрый день всем.

Ситуация такая:
Есть DLL на Delphi (не ActiveX) , вызываемая из VB. Периодически в DLL и в  основную программу на  VB  вносятся изменения, все компилируется заново и работает дальше.

После последнего Update’а на НЕКОТОРЫХ (не на всех!) компьютерах в системе при попытке вызвать ф-ции из DLL выдается сообщение «Run-time error 53. File not found xprint». DLL лежит там же, где и EXE, в конфигурации ничего не меняли.
Подскажите, пожалуйста, в чем может быть причина. Где искать – в DLL или в VB?


 
Сергей М. ©   (2006-12-22 11:43) [1]

Судя по "при попытке вызвать" - в DLL.
Судя по тексту ошибки - в VB


 
Akni ©   (2006-12-22 11:55) [2]

немного поподробнее:
это сообщение выдается даже при вызове старых ф-ций из DLL, декларация которых в DLL и код вызова из VB не менялись.
На некоторых компах отрабатываются все вызовы без ошибок, на других при вызове любой ф-ции из DLL выдается «Run-time error 53. File not found xprint».


 
Сергей М. ©   (2006-12-22 12:04) [3]

Т.е. имя файла "xprint" тебе вообще ни о чем не говорит, этот файл нигде и никоим образом не фигурирует ни в тексте ДЛЛ ни в тексте VB ?


 
Akni ©   (2006-12-22 12:13) [4]

xprint - это и есть имя DLL


 
Сергей М. ©   (2006-12-22 12:23) [5]

Ну так а что же ты тогда говоришь "при попытке вызвать ф-ции" ?
Если файл библиотеки не найден (почему - это уже другой вопрос), о каком вызове может идти речь ?

Между прочим,

 { The network path was not found. }
 ERROR_BAD_NETPATH = 53;

Каким боком тут (при поиске сист.загрузчиком твоей ДЛЛ) присутствует сетевой путь - думай сам.


 
Akni ©   (2006-12-22 13:21) [6]

за наводку спасибо, но идей пока, увы, никаких.
вот декларация ф-ции в VB:
Private Declare Function ReportX Lib "xprint" (ByVal Wnd As Long, ByVal s As String) As Long

xprint.dll лежит там же, где и exe. декларации не менялись.
в dll была добавлена одна новая ф-ция и dll была перекомпилирована заново. больше изменений никаких.


 
Сергей М. ©   (2006-12-22 13:32) [7]


> Akni ©   (22.12.06 13:21) [6]


VB-приложение не использует стат.импорт, т.е. при обращении к декларированной библ.ф-ции вызывает LoadLibrary. Этим фактом и можно воспользоваться, чтобы поставить засаду и поймать "глюк" на месте его попытки возникновения.

Берём любой мало-мальски приличный отладчик (тот же OllyDbg вполне сойдет), грузим VB-приложение, ставим точку останова на входе в kernel32.LoadLibrary, при выполнении приложения ловим ее, ищем в параметре подстроку xprint, если она присутствует, то внимательно анализируем путь, сравнивая его с текущим, а так же с системным по умолчанию и путями, прописанными в переменных окружения.


 
Сергей М. ©   (2006-12-22 13:36) [8]

Кстати, засада может быть и в инициализации самой dll.

Если ф-ция иниц-ции по каким-то причинам вернула INIT_FAIL (не 0), система вернет в вызвавшее LoadLibrary приложение ошибку именно такого содержания.


 
Akni ©   (2006-12-22 13:48) [9]

спасибо.
мне кажется, что дело скорее всего в dll. тогда, если можно, еще один вопрос: как проверить, что вернула LoadLibrary и где этот вызов отследить?


 
umbra ©   (2006-12-22 13:55) [10]

> как проверить, что вернула LoadLibrary и где этот вызов
> отследить?

импортируйте ее в ВБ проект и смотрите на здоровье


 
Сергей М. ©   (2006-12-22 14:05) [11]


> как проверить, что вернула LoadLibrary и где этот вызов
> отследить?


Сделай в Делфи тестовое приложение. Брось на форму кнопку, в OnClick напиши

Win32Check(LoadLibrary("xprint.dll"))

Положи исп.файл приложения в тот же каталог, где размещен исп.файл VB-приложения, запусти, нажми кнопку.

Если не увидишь окна с ошибкой, значит иниц-ция успешно выполнена и врет то самое VB-приложение


 
Akni ©   (2006-12-22 14:30) [12]

спасибо еще раз. это оказался VB. будем искать дальше. вот только никакого мало-мальски приличного отладчика у нас нет


 
Сергей М. ©   (2006-12-22 14:40) [13]


> никакого мало-мальски приличного отладчика у нас нет


Скачай OllyDbg, он небольшой и не требует инсталляции


 
tesseract ©   (2006-12-22 16:59) [14]

гм а попробуй DLL с полным маршрутом указать. Может рабочая папка в настоящий момент другая и VB DLL не видит.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.07 c
15-1169815239
zdm
2007-01-26 15:40
2007.02.18
Нумерация страниц


10-1128586305
DmiSb
2005-10-06 12:11
2007.02.18
Нужен алгоритм кодирования MIME


15-1169869873
IMHO
2007-01-27 06:51
2007.02.18
MS Outlook и NNTP


1-1167139043
DelphiLexx
2006-12-26 16:17
2007.02.18
Присоединить статическую библиотеку *.lib


2-1170329275
Beavercrazy
2007-02-01 14:27
2007.02.18
Как узнать, что произошел редирект?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский