Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подключение к функциям *.dll файлов

2.0K
11 декабря 2006 года
Andi_SPAWN
69 / / 28.02.2004
Всем привет!
У меня такая проблема, набираю код:

 
Код:
Private Declare Function Summa Lib "Project2" _
             (ByVal x As Integer, ByVal y As Integer) As Integer
Option Explicit


И во время запуска проги у меня выскакивает ошибка:
Run time error '453'
Can't find DLL entry point Summa in Project2

тоесть проге нужна какая-то точка входа, в литературе никаких точек входа я не нашел, помогите пожалуйста, если можно то теорией с примером!

Спасибо!
257
11 декабря 2006 года
kosfiz
1.6K / / 18.09.2005
ну обычно еще указывается после
 
Код:
Private Declare Function Summa Lib "Project2"

следующее
 
Код:
Alias "имя функции, то под каким она экспортируется из длл"

а потом уже все остальное. кстати если Project2.dll не в папке windows, то могут быть проблемы, если явно не указать местонахождения(по-крайней мере у меня так).
вот пример только с процедурой(в a.dll есть процедура ShowDialog):
 
Код:
Public Declare Sub ShowDlg Lib "a" Alias "ShowDialog" ()
Option Explicit
2.0K
12 декабря 2006 года
Andi_SPAWN
69 / / 28.02.2004
Я все это понимаю, но у меня проблема с подкдючением, прога хочет "точку входа"??? А что это я не знаю!
257
12 декабря 2006 года
kosfiz
1.6K / / 18.09.2005
прога не точку входа хочет, она просто не может найти эту функцию(Summa) в длл(потому как там нет такой функции). в длл может быть несколько функций, так значит надо обязательно указать какую ты собираешься использовать, причем сделать это либо с помощью Alias(Alias "реальное имя функции в длл") либо указав вместо Summa, реальное имя функции, которую ты собираешься использовать, а не то имя под которым ты собираешься использовать её в своей программе.
2.0K
12 декабря 2006 года
Andi_SPAWN
69 / / 28.02.2004
Вся проблема в том, что эта ф-я в длл так и называется! Если я указываю в Alias такое же название как и в Declare Function то при переходе на следующую строку Alias исчезает! Может я че то не понимаю, ну вот давай возьмем мой пример:
Создай длл и запиши в нее всего одну ф-ю Summa которая делает сложение 2-х заданых чисел и скомпилируй ее. Затем создай exe файл (форма на которой кнопка) и в событие кнопки Click пропиши код который выкидывает MsgBox с результатом сложения 2-х чисел, который получается в результате вызова ф-и Summa из рание скомпилированой длл. Если получется сбрось пример! Спасибо!
257
12 декабря 2006 года
kosfiz
1.6K / / 18.09.2005
а dll что на basic'е написана, т.е. ActiveX Dll? если да, то весь код что здесь приведен вообще не проканает, т.к. ActiveX Dll и обычные длл отличаются. посмотри вот это тогда что ли. если это длл не на basic'е то кинь её мне на [email]kosfiz@mail.ru[/email]
2.0K
16 декабря 2006 года
Andi_SPAWN
69 / / 28.02.2004
Спасибо за интересную ссылку на статью по DLL. Если я правильно все понял то ActiveX DLL которые написаны на VB 6.0 можно подключать к проектам только на стадии розроботки и пир этом нужно иметь исходники, а скомпилированые ActiveX DLL можно использовать любым языком програмирование который поддерживает ActiveX?
8.9K
16 декабря 2006 года
Залетин Виталий
71 / / 10.12.2005
Цитата: Andi_SPAWN
Спасибо за интересную ссылку на статью по DLL. Если я правильно все понял то ActiveX DLL которые написаны на VB 6.0 можно подключать к проектам только на стадии розроботки и пир этом нужно иметь исходники, а скомпилированые ActiveX DLL можно использовать любым языком програмирование который поддерживает ActiveX?


А зачем Вам исходники ДЛЛки? В окне Проэкт-Референсес нажмите на кнопочку обзора и найдите вашу ДЛЛ, выберите ее и в проекте у Вас будет подключена она. В объект-броузере можно будет посмотреть классы и их методы.
Можно и без подключения: для этого нужно использзовать позднее связывание, реализуемое функцией CreateObject. Например:

SET Word = CreateObject("Word.Application")

этим самым Вы создадите объект текстового редактора Ворд (кто ж его не знает, который, кстати, АктивХ ЕХЕ). Аналогично и со своими ДЛЛ и АктивХ ЕХЕ:

Set MyObject = CreateObject("ИмяВашегоПроекта.Имя класса")

Главное, что надо знать имена своих объектов и они должны быть зарегистрированы в системе (RegSvr32 Имя_ДЛЛ_Файла).

Я бы советовал изучить объектно-ориентированное программирование в бейсике поподробнее - без этого никуда.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог