Страница: 1 |
Страница: 1 |
Вопрос: Использование DLL (не ActeveX) в VB?
Добавлено: 27.02.10 00:46
Автор вопроса: Anton
Здравствуйте!
Подскажите, как использовать DLL (не ActeveX) в VB?
Или кто-то поможет перевести код с С+ или Паскаля на VB.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 27.02.10 01:01
VB понимает только __stdcall, так что бывает приходится перекомпилить библиотеку. http://msdn.microsoft.com/en-us/library/984x0h58(VS.71).aspx
Хотя я не знаю что за dll тут используется, и вообще не знаю есть ли проблема)
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 27.02.10 08:27
Winand, так и стоит-ли поднимать панику в этом случае? А если даже и стоит, то нам не страшен серый волк: http://vbnet.ru/forum/show.aspx?id=198338
Anton, работать можно, либо предварительно задекларировав функции, как работают с Windows API, описание которых тебе должен дать создатель длл-ки, либо через тот пример ссылку на который я в том топике запостил.
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 28.02.10 11:31
Какие функции экспортирует библиотека удобно смотреть с помощью DLL Export Viewer
sne, ого, первый раз вижу такое) круто. хотя если есть код библиотеки, то stdcall вставить даже проще
p.s. Недавно прочитал на википедии, что в бейсике часто проектируют интерфейс, а всё остальное пишут на СИ и работают через библиотечные вызовы. Надо бы попробовать
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 28.02.10 12:00
Какие функции экспортирует библиотека удобно смотреть с помощью DLL Export Viewer
Только кол-во параметров и их тип вряд-ли таким образом можно узнать
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 28.02.10 17:12
sne, это верно) Хотя не до конца. Как я понимаю, если нет def файла то stdcall функции "декорируются" так:
An underscore (_) is prefixed to the name. The name is followed by the at sign (@) followed by the number of bytes (in decimal) in the argument list. Therefore, the function declared as int func( int a, double b ) is decorated as follows: _func@12
Соответственно, можно узнать общий размер параметров. А они случаем не всегда по 4 байта?
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 28.02.10 18:23
Ты ведь сам привел пример с 8-байтовым double
Номер ответа: 7
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #7
Добавлено: 28.02.10 19:58
И правда) В любом случае не надо использовать библиотеки без докуметации там всё написано обычно