powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Dll не подключается
33 сообщений из 33, показаны все 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
Dll не подключается
    #35565902
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чудеса, выкладывайте сюда свою dll + ini
посмотрим.
...
Рейтинг: 0 / 0
Dll не подключается
    #35565927
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кодов dll нет.

Вызов функции из dll:
Код: plaintext
1.
2.
3.
4.
5.
6.
'фунции из библиотеки mtesrl.dll
Private Declare Function DF_Connect Lib "mtesrl.dll" _
    Alias "MTEConnect" ( _
    ByVal Params As String, _
    ByVal ErrorMsg As String) As Integer

Текст ini
[GENERAL]
Logging=1
ClientLogsDir=./Logs
ClientLogLevel=2
ErrLog=./Logs/ErrorLog.txt

Пример описания и вызова функции на C++:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
(C language definition)
int32 WINAPI MTEConnect(char *Params, char *ErrorMsg);


... вызов
int32 Idx;
char ErrorMsg[ 255 ];
...
Idx = MTEConnect(“PORT=COM1\rBAUDRATE= 115200 ”, ErrorMsg);
if( Idx < MTE_OK )
{
fprintf(stderr, “Ошибка при установке соединения: %s”, ErrorMsg);
	exit( 1 );
}
else 
  fprintf(stdout, “Соединение установлено.”);


...
Рейтинг: 0 / 0
Dll не подключается
    #35565940
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте в тестовой папке директорию \Logs
и пустой файлик ErrorLog.txt туда положите
...
Рейтинг: 0 / 0
Dll не подключается
    #35565951
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделала. Положила. Запустила. Ошибка таже - 53 File Not Found
...
Рейтинг: 0 / 0
Dll не подключается
    #35565956
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда остается попробовать сваять VC++ программку с одним вызовом и проверить работоспособность dll из нее. если не поможет, то все претензии к разработчикам данной библиотеки
...
Рейтинг: 0 / 0
Dll не подключается
    #35565984
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Kallandor
> Сделала. Положила. Запустила. Ошибка таже - 53 File Not Found


А что говорит filemon? Какой файл то хоть не найден?

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Dll не подключается
    #35565995
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю что этот: PORT= COM1
...
Рейтинг: 0 / 0
Dll не подключается
    #35566031
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Kallandor
> Сделала. Положила. Запустила. Ошибка таже - 53 File Not Found


А что говорит filemon? Какой файл то хоть не найден?

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4

Игорь! Спасибо вам большое!!! Оказывается эта dll вызывает другие dll, а не только ini-файл. И собственно в filemon отчетливо было видно какие dll ему еще нужны. Сейчас он хотя бы функцию выполняет и какой-то ответ выбирает.

Kost_One:

Строку подключения я первым делом проверила. Так что там все нормуль вроде бы.

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


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