DLL на VB.NET (точка входа)

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

DLL на VB.NET (точка входа)

Сообщение WitC » 19.06.2008 (Чт) 16:48

Доброго времени!
Обыскался в инете темы по созданию DLL в VB.NET, ни чего не нашел... тем по подключению много, а по созданию...
Проблема - хочу создать приложение (интерфейс + DLL). DLL принимают, обрабатывают и возвращают какие-либо данные, выполняют различные действия (напр. - подключение к БД... и т.д.)... интерфейс согласовывет и отображает все это...
Кто-то может подсказать где вычитать правила создания DLL в VB.NET???
В принципе, я создал класс с функцией а=а+1, откомпилировал в DLL, из другой программы пытаюсь передать параметр .... пишет - ненайдена точка входа в dll... Как присоздании dll указать точку входа???

Код примерно такой:

Public Class MyDll
Public Shared Function addA(ByVal a As Double) As Double
a= a + 1
Return a
End Function
End Class

и вызывающая программа:

Public Class Form1
Public Declare Auto Function funcMy Lib "C:\MyDll.dll" (ByVal v As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call funcMy(0)
End Sub
End Class

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.06.2008 (Пт) 7:18

Никак. Не надо. Подключи DLL в References и пользуйся на здоровье. Литературы - море. Стоит только поискать. Любой учебник/справочник по VB.NET, да и MSDN рулит.
Весь мир матрица, а мы в нем потоки байтов!

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

Сообщение WitC » 20.06.2008 (Пт) 10:00

Viper писал(а):Подключи DLL в References

Пробовал, подключается... вижу ее присутствие в проекте... а обратиться не могу... VB не определяет ни DLL, ни функуию - куда параметр передавать... Тем более, вся заварка в том, чтобы можно было динамически поключать DLL - для будующего маштабирования функционала программы...
Я могу ошибаться с написанием самой Dll. По MSDN не читается - английский... Вчера нашел книгу:
Название: Visual Basic .NET. Учебный курс
Автор: В. Долженков, М. Мозговой
в ней есть тема по созданию Dll... сейчас читаю...
Если есть какой-нить маленький примерчик - буду ОЧЕНЬ благодарен!

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 20.06.2008 (Пт) 11:03

Непонятно что у тебя не получается.

Тем более, вся заварка в том, чтобы можно было динамически поключать DLL - для будующего маштабирования функционала программы...

http://vbstreets.ru/VBdotNET/Articles/65963.aspx
Вложения
ClassLibrary1.zip
(182.05 Кб) Скачиваний: 293

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

Сообщение WitC » 20.06.2008 (Пт) 13:41

Спасибо за ссылку... читаю...
пример с использованием класса тоже нормально, но...
когда у меня класс в одном проекте с програмой - все работает... а я хочу подключать свою DLL методом
Public Declare Auto Function/Sub myFunc Lib "myDLL" (ByVal myI As Integer) As Integer
т.е. из своей программы убери класс и поключи скомпилированную DLL (она в папке с проектом класса) прямо в Форме по методу
Public Declare Auto Function/Sub myFunc Lib "myDLL" (ByVal myI As Integer) As Integer
и на кнопках: msgbox(myFunc (30,10))
... тогда, из VB.NET, вылезает ошибка типа - DLL вижу, а точку входа нет. Я понимаю, что обработать параметры дожен не класс (myDLL), а функция в моем классе (addA) (пример из первого сообщения)
так и вопрос остается: КАК ПЕРЕДАТЬ ПАРАМЕТРЫ В ФУНКЦИЮ КЛАССА, т.е., я так понимаю, надо определить точку входа... как ее описать в моей DLL?

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

Сообщение WitC » 20.06.2008 (Пт) 13:50

Да, забыл пример вложить... Ивот нарыл в инете... Тут говорится, что программе (.exe) ..."передается информация о DLL и адрес функции"... т.е. точки входа. Выписка:

Когда программа использует функцию из DLL, эта функция не компонуется с файлом .EXE. При динамической компоновке используется другой метод. Во-первых, на этапе компоновке TLINK связывает с вашим файлом .EXE записи импорта (содержащие информацию о DLL и адресе процедуры). Это временно разрешает в вашей программе внешние ссылки на функции DLL. Данные записи импорта обеспечиваются файлами определения модуля или библиотеками импорта. На этапе выполнения информация записи импорта используется для поиска и привязки к вашей программе функции DLL.

Вот я чувствую, что при создании DLL - надо указать (каким-то методом) что эта процедура (или несколько процедур - тогда несколько точек входа) будет точкой входа
Вложения
Primer.rar
пример...
(111.76 Кб) Скачиваний: 215

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.06.2008 (Пт) 18:03

WitC, еще раз повторяю, что в DLL создаваемые в VB.NET являются библиотеками классов, и для них не нужно определять точки входа, и не нужно объявлять функции из такой DLL через Declare. Установите ссылку на DLL и используйте классы/функции/все что угодно.
Весь мир матрица, а мы в нем потоки байтов!

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 21.06.2008 (Сб) 1:56

Ты хочеш написать на VB.NET "Dynamic Library", тут тебе в помощь C++, Delphi , Power Basic и т.д.
К твоему сожалению на VB.NET у тебя ничего не получится,
(ну или пока у Хакера не появится желание зделать что то тип этого для VB.NET > http://bbs.vbstreets.ru/viewtopic.php?t=34902 :D )

А на счёт динамического подключения NET сборок я уже тебе дал ссылку.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.06.2008 (Сб) 10:44

Atoman
Не говорите чушь.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

Сообщение WitC » 21.06.2008 (Сб) 12:52

Спасибо всем за уделенное время! Досадно, что нельзя реализовать таким способом... Буду возвращаться в VB-6 (спасибо хаккеру и Atoman) или буду осваивать C# - все равно на него переходить собирался... К стати, а C# пишет DLL под Windows (динамические библиотеки)???

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 21.06.2008 (Сб) 14:18

В .NET код транслируется в байт-код (Intermediate Language).
Так что на выходе получается примерно одно и то же.

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

Сообщение WitC » 21.06.2008 (Сб) 23:33

Всем спасибо! Тема закрыта!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 1

    TopList