Регистрация COM объекта на VB.NET

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

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

ozyabkin
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 16.11.2005 (Ср) 0:02

Регистрация COM объекта на VB.NET

Сообщение ozyabkin » 16.11.2005 (Ср) 0:09

Я новичок в VB.NET. Работаю над проблемами цифровой обработки сигналов. У меня есть проблемы со скоростью выполнения алгоритмов в VB6 SP5. Поэтому я начинаю осваивать новую среду разработки сразу с динамических библиотек DLL.

Мне нужно разработать две библиотеки под NET: первая - для работы с комплексными числами; вторая - библиотека алгоритмов цифровой обработки сигналов.

При создании библиотеки Complex.dll у меня не компилируется библиотека. Выдается следующее сообщение: "COM Interop registration failed. COM register function must be static".

Посылаю вам архив моего проекта. Если возможно, подскажите, пожалуйста, где может находиться ошибка.

Заранее Вам благодарен.
Вложения
pComplex.NET.zip
Проект для работы с комплексными числами
(9.58 Кб) Скачиваний: 45

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 16.11.2005 (Ср) 11:19

А сразу вопрос: надо именно COM-библиотеки разработать? Где эти библиотеки будут потом использоваться?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 16.11.2005 (Ср) 12:11

Я посмотрела на проект. По-моему, Вы перемудрили....
Вот пример библиотеки, которая абсолютно нормально работает из VB6.
Единственное, что меня реально удивило, что нет подсказок методов и свойств класса. Я не знаю, можно ли сделать так, чтобы они были.

Вызов из VB6:
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
Dim c As New Complex
Const pi = 3.14

    c.InitPolar 3, pi / 2
    MsgBox CStr(c.Real) + " " + CStr(c.Image)
End Sub


Несколько комментариев к самому построению проекта:
1) Меня удивило, что Вы используете в своем проекте интерфейс и потом его реализуете в классе. Зачем? Ведь не будет второго класса, который будет реализовывать этот интерфейс и не будет другого интерфейса, который будет реализован этим классом.
2) Я бы использовала не структуру а мемберы класса - так, как я показала в своем варианте.
Вложения
ComplexLib.zip
(13.31 Кб) Скачиваний: 65
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

ozyabkin
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 16.11.2005 (Ср) 0:02

Сообщение ozyabkin » 17.11.2005 (Чт) 0:47

Мне нужно выполнять вычисления с большими комплексными матрицами. В VB6 процесс вычисления матриц невозможно ускорить. Надо переходить к FORTRAN, либо на ASSEMBLER, либо на NET.
Например, комплексные матрицы A(4096,4096) и B(4096) перемножаются несколько секунд, а нужно их перемножать десятки. Так получается, что в MATLAB алгоритм INVFREQZ создания линеаризованной модели занимает 1...3 секунды с 30 итерационными вычислениями, на VB6 это занимает около 50...120 секунд. Утомительно :!:

Хочу сделать COM объект, чтобы он мог работать как в VB.NET, так и в VB6.

Большое спасибо.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.11.2005 (Чт) 12:33

ozyabkin писал(а):Так получается, что в MATLAB алгоритм INVFREQZ создания линеаризованной модели занимает 1...3 секунды с 30 итерационными вычислениями, на VB6 это занимает около 50...120 секунд. Утомительно :!:


При правильном алгоритме в VB6 такой разницы быть не должно - если выполняется Exe-шник откомпилированный в Native-code. А вот если программа выполняется из IDE или exe-шник был создан в P-code, то разница может быть где-то в этих пределах, для числовых операций, конечно...

Что у Вас - Exe в Native code, Exe в P-code или IDE?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ozyabkin
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 16.11.2005 (Ср) 0:02

Сообщение ozyabkin » 18.11.2005 (Пт) 1:57

Exe в Native code :!:


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

    TopList