powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создание библиотеки классов с последующим присоединением *.dll к другим проектам
20 сообщений из 20, страница 1 из 1
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368442
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Пытаюсь создать небольшую библиотеку наподобие того, что приведенно ниже.
Полученная библиотека не присоединяется к проекту. Не пишет ничего.
Знаю, что по синтаксису не правильно пишу. Хочу, чтобы все функции и процедуры из моей библиотеки были доступны из других проектов.
Заранее спасибо.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
'библиотека классов
Public Class All
    Dim a As Double
    Dim d As Double
    Dim c As Double
    Public Shared Sub AddNum(ByVal a As Double, ByVal d As Double, ByRef c As Double)
        a_q(a)
        c = a_q(a) + d
    End Sub
    Public Shared Function a_q(ByRef a As Double) As Double
        a_q = a * a
        'Return a
    End Function
    Public Shared Sub d_q(ByRef d As Double)
        d = d * d
    End Sub
End Class

'сторонний проект
Imports ClassLibrary1

Public Class Form1
    Dim c As Double
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        All.AddNum(2, 3, c)
    End Sub

End Class
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368627
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV,

в References проекта добавил свою библиотеку?

Что значит
авторПолученная библиотека не присоединяется к проекту. Не пишет ничего.


какая-то ошибка падает?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368781
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Именно так и пытался добавить. Не получается.
Мой код немного сложнее, но написан в той же манере, что и вышеприведенный.
Есть множество предупреждений о том, что переменная передаётся по ссылке до присвоения значения, а так же есть неиспользованные локальные переменные.
Может ли это повлиять?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368786
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV,

ну что значит не получается?

Почему закомментировано "Return a" в a_q? Мега-библиотека вообще компилируется твоя?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368805
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

есть небольшая описка в примере не относящаяся к сути дела.
Пример компилируется, присоединяется и работает со сторонним проектом.

А вот мегабиблиотека моя не присоединяется и всё тут!
Если просто присоединяю её как существующий элемент в классе, все нормально работает.
Если я пытаюсь добавить dll-ку скомпилированную из этого класса, то ничего.

Может проблема в объявлении переменных?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368810
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot MAGRAV
Пример компилируется, присоединяется и работает со сторонним проектом.
.....
А вот мегабиблиотека моя не присоединяется и всё тут!
[/quot]

Я ничего не понял - тот кусок кода, который ты привел вверху - это пример или твоя мега-библиотека? Если пример, и он компилируется и нормально цепляется к стороннему проекту - на кой ты его сюда вписал?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368821
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Потому, что мегабиблиотека большая по объёму кода. Там много математики и логики. Не информативно. Пытался в примере показать сам принцип, как я работаю.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38368895
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV, твой класс плохо спроектирован. Предупреждения о передаче переменной по ссылке до иниициализации говорят именно об этом.

1) ByRef аргументы лучше не использовать т.к. они запутывают код. Глядя на вызов All.AddNum(2, 3, c) нельзя сразу понять что третий аргумент будет изменен в результате вызова. Советую полностью избавиться от ByRef аргументов. Возращай модифицированное значение из функции или меняй экземлярное поле класса.

2) В твоем классе есть экземплярные поля и но не видно экземплярных методов, а только shared методы. Странное сочетание. В данном случае надо скорее только экземплярные или только shared.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38369211
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Вы бы мне очень помогли, еслиб показали как этот же пример представить грамотно.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38369288
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV, конкретно твой пример можно переписать так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
'библиотека классов
Public Class All
    Public Shared Function AddNum(ByVal a As Double, ByVal d As Double) As Double
        Return a*a + d
    End Function
End Class

'сторонний проект
Imports ClassLibrary1

Public Class Form1
    Dim c As Double
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        с = All.AddNum(2, 3)
    End Sub

End Class



Методы a_q и d_q я выкинул т.к. не вижу никакого смысла выносить возведение в квадрат в отдельную функцию.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38369313
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Спасибо конечно.
Попытаюсь объяснить свою ситуацию. У меня масса логических-математических функций и процедур. Создание каждой из них потребовала вагон времени и сил. Они все как бэ работают на одно дело. Это своеобразная мат.модэль. Её вид не окончателен и постоянно претерпевает изменения. Отлаживаю эти модуля в специально предназначенном для этого проекте. Сейчас возникла необходимость представить этот код в виде библиотеки.
Можно переиначить всё один раз, но делать это каждый раз....
Есть ли способ с минимальным переделками кода добиться необходимого результата?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38369356
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV, ок, оставим пока вопрос дизайна в стороне.

Для создания библиотеки достаточно создать новый Class Library проект, сделать Project Reference на него из другого, добавить Imports и твой класс должен быть виден. Все ли из перечисленного ты выполнил? Если да, то какие ошибки ты получаешь?
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38369365
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Всё перечисленное я выполнил. Полученная библиотека просто игнорируется обозревателем, т.е. она не добавляется в папку с проектом.

Попробую не использовать ByRef, а вместо этого применить Return. Потом отпишу. Спасибо за рекомендации!
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38369383
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAVВсё перечисленное я выполнил. Полученная библиотека просто игнорируется обозревателем, т.е. она не добавляется в папку с проектом.
Под "обозревателем" ты имеешь в виду solution explorer? Вообще ты что-то путаешь. Если ты добавил project reference на свою библиотеку, то она уже должна быть в твоем solution иначе project reference не добавить. Ты скорее всего добавил dll reference. В этом случае проект в solution не добавляется.

Удали dll reference, затем щелкни правой кнопкой на имени solution и выбери команду add - new project. Выбери Class Library. Скопируй тело своего класс All в новый проект. Далее как я писал выше.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38391659
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И снова доброго времени суток! К сожалению катастрафически нехватает времени домучать мой вопрос.
Предъидущее обсуждение зашло в тупик. Я не правильно, повидимому, поставил задачу. Попытаюсь вновь.
В предъидущем примере небыло передачи массивов. Я привык писать так, чтобы выносить особоважные куски своего кода в модуля. С применением "Sub...", "Function..." и т.д. и т.п. Хочу писать это всё грамотно в классах, чтобы в последующем создавать подключаемые dll. Но научиться одно, а вот многолетненакопленные результаты труда в старом (практически процедурном) стиле переиначить на новые рельсы классов хочется с минимальными потерями и переделками. Для меня раздробление конструкций заключённых в мои "Sub..." и "Function..." почти равноценно утере. Хотя может быть у страха глаза велики).

Вот пример моей неудачной попытки создания примитивного мат.класса. В нём недопустимо слияние конструкций заключённых в "Sub..." и "Function...", как это мне уже успели посоветовать форумчане. Это принципиальный пример моего подхода.
Покажите пожалуйста, как это модифицировать в стиле классов во всей их красе!? Заранее спасибо!

авторPublic Class All
Public a() As Double
Public d() As Double
Public c As Double
Public Shared Sub AddNum(ByVal a() As Double, ByVal d() As Double, ByRef c As Double)
Dim ff As Double

d_q(d, ff)
c = a_q(a) + ff
End Sub
Public Shared Function a_q(ByVal a() As Double) As Double
Dim i As Integer
a_q = 0
For i = 1 To a(0)
a_q = a_q + a(i)
Next i
'Return a_q
End Function
Public Shared Sub d_q(ByRef d() As Double, ByVal ff As Double)
Dim i As Integer
ff = 0
For i = 1 To d(0)
ff = ff + d(i)
Next i
End Sub
End Class
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38391678
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV,

Не надо ничего делать просто ради того, чтобы было 'в стиле классов'. Классы нужны, чтобы пользоваться их преимуществами - наследование, инкапсулирование, абстракция. Если весь вопрос в реализации нескольких вырвиглзных мат функций, которые не будут меняться, то идея класс нужен лишь чтоб логически обозвать их все. Почитай какой-нибудь букварь по Бейсику, глядишь поймешь что тебе надо.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38391689
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MAGRAV...Хочу писать это всё грамотно в классах, чтобы в последующем создавать подключаемые dll....[/quot]

Не прихоть у меня. "Hello World"-ов навалом в нэте. По ним понятно, как билетную кассу организовать. Красотища. А вот с примером вроде калькулятора ничего!
Лучше ничего не ответить чем слать на несколько букв, если помоч не можем.
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38391696
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV,

Калькуляторов не меньше чем хеловорлдов, лишь бы в гугле аккаунт не забанен был. Еще раз - почитай букварь. Тот кусок кода, что ты написал, в классе не нуждается
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38391706
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Прочту непременно! Значит основывая на ваших рекомендациях я смогу скомпелировать вышеприведенный код в библиотеку DLL, подцепить её к своим проектам и она будет исправно работать с ними в режиме совместного и одновременного доступа...?
Ведь я этого добиваюсь...
...
Рейтинг: 0 / 0
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
    #38391770
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сможешь, если нигде не напортачил.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создание библиотеки классов с последующим присоединением *.dll к другим проектам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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