|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
Всем привет! Пытаюсь создать небольшую библиотеку наподобие того, что приведенно ниже. Полученная библиотека не присоединяется к проекту. Не пишет ничего. Знаю, что по синтаксису не правильно пишу. Хочу, чтобы все функции и процедуры из моей библиотеки были доступны из других проектов. Заранее спасибо. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 09:08 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, в References проекта добавил свою библиотеку? Что значит авторПолученная библиотека не присоединяется к проекту. Не пишет ничего. какая-то ошибка падает? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 11:06 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
Pallaris, Именно так и пытался добавить. Не получается. Мой код немного сложнее, но написан в той же манере, что и вышеприведенный. Есть множество предупреждений о том, что переменная передаётся по ссылке до присвоения значения, а так же есть неиспользованные локальные переменные. Может ли это повлиять? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 12:18 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, ну что значит не получается? Почему закомментировано "Return a" в a_q? Мега-библиотека вообще компилируется твоя? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 12:20 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
Pallaris, есть небольшая описка в примере не относящаяся к сути дела. Пример компилируется, присоединяется и работает со сторонним проектом. А вот мегабиблиотека моя не присоединяется и всё тут! Если просто присоединяю её как существующий элемент в классе, все нормально работает. Если я пытаюсь добавить dll-ку скомпилированную из этого класса, то ничего. Может проблема в объявлении переменных? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 12:32 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
[quot MAGRAV Пример компилируется, присоединяется и работает со сторонним проектом. ..... А вот мегабиблиотека моя не присоединяется и всё тут! [/quot] Я ничего не понял - тот кусок кода, который ты привел вверху - это пример или твоя мега-библиотека? Если пример, и он компилируется и нормально цепляется к стороннему проекту - на кой ты его сюда вписал? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 12:36 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
Pallaris, Потому, что мегабиблиотека большая по объёму кода. Там много математики и логики. Не информативно. Пытался в примере показать сам принцип, как я работаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 12:41 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, твой класс плохо спроектирован. Предупреждения о передаче переменной по ссылке до иниициализации говорят именно об этом. 1) ByRef аргументы лучше не использовать т.к. они запутывают код. Глядя на вызов All.AddNum(2, 3, c) нельзя сразу понять что третий аргумент будет изменен в результате вызова. Советую полностью избавиться от ByRef аргументов. Возращай модифицированное значение из функции или меняй экземлярное поле класса. 2) В твоем классе есть экземплярные поля и но не видно экземплярных методов, а только shared методы. Странное сочетание. В данном случае надо скорее только экземплярные или только shared. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 13:38 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
bazile, Вы бы мне очень помогли, еслиб показали как этот же пример представить грамотно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 17:07 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, конкретно твой пример можно переписать так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Методы a_q и d_q я выкинул т.к. не вижу никакого смысла выносить возведение в квадрат в отдельную функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 17:50 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
bazile, Спасибо конечно. Попытаюсь объяснить свою ситуацию. У меня масса логических-математических функций и процедур. Создание каждой из них потребовала вагон времени и сил. Они все как бэ работают на одно дело. Это своеобразная мат.модэль. Её вид не окончателен и постоянно претерпевает изменения. Отлаживаю эти модуля в специально предназначенном для этого проекте. Сейчас возникла необходимость представить этот код в виде библиотеки. Можно переиначить всё один раз, но делать это каждый раз.... Есть ли способ с минимальным переделками кода добиться необходимого результата? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 18:04 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, ок, оставим пока вопрос дизайна в стороне. Для создания библиотеки достаточно создать новый Class Library проект, сделать Project Reference на него из другого, добавить Imports и твой класс должен быть виден. Все ли из перечисленного ты выполнил? Если да, то какие ошибки ты получаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 18:39 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
bazile, Всё перечисленное я выполнил. Полученная библиотека просто игнорируется обозревателем, т.е. она не добавляется в папку с проектом. Попробую не использовать ByRef, а вместо этого применить Return. Потом отпишу. Спасибо за рекомендации! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 18:52 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAVВсё перечисленное я выполнил. Полученная библиотека просто игнорируется обозревателем, т.е. она не добавляется в папку с проектом. Под "обозревателем" ты имеешь в виду solution explorer? Вообще ты что-то путаешь. Если ты добавил project reference на свою библиотеку, то она уже должна быть в твоем solution иначе project reference не добавить. Ты скорее всего добавил dll reference. В этом случае проект в solution не добавляется. Удали dll reference, затем щелкни правой кнопкой на имени solution и выбери команду add - new project. Выбери Class Library. Скопируй тело своего класс All в новый проект. Далее как я писал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2013, 19:04 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
И снова доброго времени суток! К сожалению катастрафически нехватает времени домучать мой вопрос. Предъидущее обсуждение зашло в тупик. Я не правильно, повидимому, поставил задачу. Попытаюсь вновь. В предъидущем примере небыло передачи массивов. Я привык писать так, чтобы выносить особоважные куски своего кода в модуля. С применением "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 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 07:40 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, Не надо ничего делать просто ради того, чтобы было 'в стиле классов'. Классы нужны, чтобы пользоваться их преимуществами - наследование, инкапсулирование, абстракция. Если весь вопрос в реализации нескольких вырвиглзных мат функций, которые не будут меняться, то идея класс нужен лишь чтоб логически обозвать их все. Почитай какой-нибудь букварь по Бейсику, глядишь поймешь что тебе надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 08:23 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV...Хочу писать это всё грамотно в классах, чтобы в последующем создавать подключаемые dll....[/quot] Не прихоть у меня. "Hello World"-ов навалом в нэте. По ним понятно, как билетную кассу организовать. Красотища. А вот с примером вроде калькулятора ничего! Лучше ничего не ответить чем слать на несколько букв, если помоч не можем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 08:38 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
MAGRAV, Калькуляторов не меньше чем хеловорлдов, лишь бы в гугле аккаунт не забанен был. Еще раз - почитай букварь. Тот кусок кода, что ты написал, в классе не нуждается ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 08:57 |
|
Создание библиотеки классов с последующим присоединением *.dll к другим проектам
|
|||
---|---|---|---|
#18+
Pallaris, Прочту непременно! Значит основывая на ваших рекомендациях я смогу скомпелировать вышеприведенный код в библиотеку DLL, подцепить её к своим проектам и она будет исправно работать с ними в режиме совместного и одновременного доступа...? Ведь я этого добиваюсь... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 09:07 |
|
|
start [/forum/topic.php?fid=20&msg=38369211&tid=1404084]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 483ms |
0 / 0 |