powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Dll не подключается
25 сообщений из 33, страница 1 из 2
Dll не подключается
    #35556606
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Уважаемые.

Подскажите пожалуйста в чем может быть ошибка при подключении не ActiveX dll (обычная написанная на С++)
Код: plaintext
1.
Public Declare Function DF_Connect Lib "D:\my.dll" _
            Alias "MConnect" (ByVal Params as LPSTR, ByVal ErrorMsg As LPSTR) As Integer
Причем тип данных с LPSTR я меняю на Long, может быть это не правильно и надо менять на string + еще что-то?

Дебагер пишет что файл не найден. Почему? Подскажите пожалуйста
...
Рейтинг: 0 / 0
Dll не подключается
    #35556714
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может потому что в D:\ файла нет?
LPSTR — указатель на строку, в вб это Long.
...
Рейтинг: 0 / 0
Dll не подключается
    #35556927
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит меняю правильно на Long и файл с указанным названием на диске D в корне есть.
...
Рейтинг: 0 / 0
Dll не подключается
    #35557106
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KallandorДобрый день, Уважаемые.
ByVal Params as LPSTR, ByVal ErrorMsg As LPSTR

ByRef Params as String, ByRef ErrorMsg As String
...
Рейтинг: 0 / 0
Dll не подключается
    #35557133
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему VB не находит библиотеку? Вроде бы и полный путь к ней прописала ((
...
Рейтинг: 0 / 0
Dll не подключается
    #35557289
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снят. Было несколько экземпляров одной и той же библиотеки. Когда удалила лишние экземпляры, все заработало.
...
Рейтинг: 0 / 0
Dll не подключается
    #35557805
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМожет потому что в D:\ файла нет?
LPSTR — указатель на строку, в вб это Long.В VB это String.
Указатель можно конечно и как long принять, только что ты потом с этим long делать будешь?
...
Рейтинг: 0 / 0
Dll не подключается
    #35558037
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VB нет указателей, поэтому это Long. Сишный аналог String — BSTR и ничто иное.
White OwlУказатель можно конечно и как long принять, только что ты потом с этим long делать будешь?CopyMemory. Указатель это ни что иное, как адрес в памяти. В памяти по этому адресу будет находиться начало unicode-строки. Правда не знаю, можно ли выяснить ее длину только по указателю. А вообще можно сделать CopyMemory с запасом и найти Chr(0). Это будет конец строки.

ADD: Хотя задумался. Я имел дело с С++ только в разрезе tlb и COM-интерфейсов, в этом случае не допускается такое вольное обращение с типами. Declare вроде бы все-таки может преобразовать указатель в строку.
...
Рейтинг: 0 / 0
Dll не подключается
    #35558078
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ VB нет указателей, поэтому это Long. Сишный аналог String — BSTR и ничто иное.
White OwlУказатель можно конечно и как long принять, только что ты потом с этим long делать будешь?CopyMemory. Указатель это ни что иное, как адрес в памяти. В памяти по этому адресу будет находиться начало unicode-строки. Правда не знаю, можно ли выяснить ее длину только по указателю. А вообще можно сделать CopyMemory с запасом и найти Chr(0). Это будет конец строки.Это все верно, но излишне сложно. VB'шная строка этот же самый указатель на ASCIIz только без возни с "z" :)
Код: plaintext
1.
2.
3.
' Сишная функция объявленная как:
int foo(char *param);
' может быть импортирована вот так:
declare function foo lib "mylib.dll" (byref param as string) as integer

AntonariyDeclare вроде бы все-таки может преобразовать указатель в строку.Там нету преобразований. Там прямая работа с указателями.
...
Рейтинг: 0 / 0
Dll не подключается
    #35565705
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще один вопрос возник: почему VB не ругается на такую конструкцию:
Код: plaintext
1.
2.
3.
Private Declare Function DF_Connect& Lib "uuuuuuuuu.aaa" _
    Alias "DFConnect" ( _
    ByRef Params As String, _
    ByRef ErrorMsg As String)

Ведь файла "uuuuuuuuu.aaa" не существует в компьютере?
...
Рейтинг: 0 / 0
Dll не подключается
    #35565712
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вызовете, тогда и ругнется
...
Рейтинг: 0 / 0
Dll не подключается
    #35565730
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так вызываю функцию, пишу
Код: plaintext
Idx = DF_Connect (param, errormsg)
и нормально, как будто бы так и надо, почему так?
...
Рейтинг: 0 / 0
Dll не подключается
    #35565736
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чудес не бывает, ищите у себя on error resume next
...
Рейтинг: 0 / 0
Dll не подключается
    #35565780
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneчудес не бывает, ищите у себя on error resume next

Ох, блин, вы совершенно правы! Незаметненько так запись нарисовалась эта запись зараза
...
Рейтинг: 0 / 0
Dll не подключается
    #35565800
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приплыли. Опять пишется ошибка что файл не найден. Ну вот почему так? Ведь и dll лежит в папке проекта, и путь я к ней полный прописываю. Чего еще не хватает?
...
Рейтинг: 0 / 0
Dll не подключается
    #35565833
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вы в отладке, то положите dll в \system32 директорию, а уже в рантайме можете класть в папку со своим exe
...
Рейтинг: 0 / 0
Dll не подключается
    #35565839
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не указывайте путь в декларации вообще, тогда dll сначала ищется в папке , где ваш exe, а затем в system32
...
Рейтинг: 0 / 0
Dll не подключается
    #35565846
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, так и сделала, как вы сказали. Убрала путь. Указала только название dll. Переложила dll в WINDOWS/system32 dll. и Все равно ошибка 53 - File Not found
...
Рейтинг: 0 / 0
Dll не подключается
    #35565851
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то вы не договариваете,а случаем ваша dll не обращается к каким-либо сторонним файлам или директориям при своей работе?
...
Рейтинг: 0 / 0
Dll не подключается
    #35565859
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dll - не моя, а сторонняя. И вы правы. Она действительно обращается к ini-шнику. А возможно и создает папку для логов и пишет в нее логи. (собстсвенно это в инишнике прописано). А еще dll не ActiveX и поэтому через REference не подключается.
...
Рейтинг: 0 / 0
Dll не подключается
    #35565866
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ini-файл положите рядом со своей dll
...
Рейтинг: 0 / 0
Dll не подключается
    #35565869
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лежит. Все равно File not Found
...
Рейтинг: 0 / 0
Dll не подключается
    #35565879
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если перед вызовом этой функции сделать ChDir на папку с ini?
...
Рейтинг: 0 / 0
Dll не подключается
    #35565884
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте чистую папку , например D:\test
киньте туда скомпиленную версию программы со всеми необходиммым файлами, включая вашу dll и ini и тп

запустите свой exe и смотрите свои логи, которые я надеюсь вы пишите при работе своей программы ;)
...
Рейтинг: 0 / 0
Dll не подключается
    #35565891
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логи в своей программе пишу. Сделала так как вы сказали. Выдал лог ошибки:

2008-29-09 17:14:24.119 ERROR: 53 DF_MMVB File not found: mtesrl.dll

Собственно он не нашел dll :(
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Dll не подключается
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]