VB6 - DLL не может быть найдена - PullRequest
4 голосов
/ 08 марта 2011

Я пытаюсь загрузить DLL в VB6 с помощью команды

Private Declare Function myFuncLib "myDLL.dll" (ByVal file_name_in As String, _ ByVal file_name_out As String) As Long

Но как только я запускаю программу, появляется всплывающее окно с текстом ":«Ошибка времени выполнения: 53 Не удается найти: myDLL.dll»

DLL находится в том же каталоге проекта.

Если я поместил myDLL.dll в папку system32, она будет работать,но я не хочу этого делать, я хотел бы поместить dll в ту же папку проекта.

Есть ли способ решить эту проблему?

Спасибо

Ответы [ 5 ]

7 голосов
/ 08 марта 2011

Мои экстрасенсорные способности предсказывают, что вы запускаете из IDE VB6 - потому что встроенный EXE найдет библиотеки DLL в каталоге приложения (в том же каталоге, что и exe).

  • При запуске из IDE VB6 найдет библиотеки DLL из каталога приложения ... но он считает, что каталог приложения является каталогом, содержащим саму IDE VB6: (
  • Один из обходных путей - изменить текущий рабочий каталог на каталог VBP, прежде чем пытаться использовать DLL. Например. Chdrive App.Path: Chdir App.Path (воздушный код)
  • РЕДАКТИРОВАТЬ После комментария от Беппе. Другой обходной путь, который вы можете попробовать, - просто на своей машине для разработки поместить копию библиотеки DLL в тот же каталог, где установлена ​​среда VB6. Возможно C:\Program Files\Microsoft Visual Studio\VB98\ Вы можете поместить DLL со встроенным EXE-файлом на пользовательские / производственные машины.
0 голосов
/ 12 сентября 2017

Как сказал Беппе в их ответе , используйте

Depends yourdll.dll

Если вы продаете другие DLL с? рядом с их именем это означает, что они пропали без вести.
Обычно это будет одна из Microsoft C ++ Debug dll i.e MSVCR120D.DLL

0 голосов
/ 26 августа 2016

Объявите ссылку на функцию Kernel32.lib SetDllDirectory:

Private Declare Function SetDllDirectory Lib "Kernel32" Alias     "SetDllDirectoryA" (ByVal path As String) As Long

Затем установите каталог Dll следующим образом:

SetDllDirectory App.path
0 голосов
/ 08 марта 2011

Решено с помощью «Зависит»

Была неудовлетворенная зависимость в DLL, но, очевидно, она возвращала ошибку в первой точке входа DLL.

Спасибо всем

0 голосов
/ 08 марта 2011

Сначала нужно зарегистрировать свою DLL.

Оболочка "regsvr32.exe / s" & путь

Где «путь» - это путь к DLL. Если DLL находится в том же каталоге, вы можете установить:

path = App.path & "/myDLL.dll"

...