Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация компонента COM. / 19 сообщений из 19, страница 1 из 1
16.03.2005, 11:46
    #32962767
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Есть задача на C# написать сборку dll для того, чтобы её функции могли использовать из FoxPro. Написал простейший класс:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System;
using System.Runtime.InteropServices;

[ClassInterface(ClassInterfaceType.AutoDual)]
public class TabCom
{
	public int Square(int a, int b)
	{
		return a * b;
	}

}

затем выставил в настройках проекта Output type как Class library.
Скомпилировал с помощью scs.exe, ны выходе имеем dll. После с помощью TlbExp.exe создал tlb-файл. dll и tlb файлы отослал человеку, который должен иметь возможность из FoxPro использовать Square, но он жалуется, что не может. ЧТо неправильно?
...
Рейтинг: 0 / 0
16.03.2005, 11:51
    #32962787
ooops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
отослал человеку, который должен иметь возможность из FoxPro использовать Square, но он жалуется, что не можетчто именно он не может

ты сам проверял работу своей DLL с FoxPro ?
...
Рейтинг: 0 / 0
16.03.2005, 12:05
    #32962851
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
2 Axeleron
какие инструкции ты давал по установке твоей библиотеки классов ?
1. установить framework ?
2. зарегистрировать сборку через regasm для COM ?
...
Рейтинг: 0 / 0
16.03.2005, 12:36
    #32963013
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
кузя, последние два пункта будут нужны, т.к. насколько понимаю второе без первого бессмысленно?
...
Рейтинг: 0 / 0
16.03.2005, 13:06
    #32963132
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
само собой.

ЗЫ
можно сделать инсталляшку для проекта и все это дело включить в нее
...
Рейтинг: 0 / 0
16.03.2005, 13:08
    #32963139
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Спасибо! :) А то вроде всё делал по инструкции и уж не знал что ещё и придумать.
...
Рейтинг: 0 / 0
16.03.2005, 16:22
    #32963934
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
В общем попробовал из Excel проверить свой COM, сделал reference на tlb-файл, но выдаётся сообщение на ActiveX component can't create object. Может быть нужно создавать строгое имя сборки? Что-то чем дальше, тем всё хуже выглядит с этим комом...
...
Рейтинг: 0 / 0
16.03.2005, 16:43
    #32964005
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Если кто знает, тыкнете меня где можно почитать про реализацию данного сабжа
...
Рейтинг: 0 / 0
16.03.2005, 16:45
    #32964010
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
а зачем тебе tlb ?
сейчас попробовал твой пример с VB6:
добавил в Referenses проекта ссылку на сборку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Form_Load()
Dim s As TabCom
Dim y As Long

  Set s = New TabCom
  y =  10 
  y = s.Square(y, y)
End Sub
и все правильно работает

ЗЫ
в свойствах проекта стоит Configuration Properties -> Build -> Register for COM interop=True (это авт. регистрация для COM)
...
Рейтинг: 0 / 0
16.03.2005, 16:55
    #32964056
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
+
ЗЫ относится к проекту на C# :) - это проект ClassLibrary
...
Рейтинг: 0 / 0
16.03.2005, 18:31
    #32964376
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Понятно, кузя, большое спасибо! Буду сейчас пробовать. :)
...
Рейтинг: 0 / 0
17.03.2005, 00:40
    #32964692
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Теперь при добавлении в Reference в VB6 ссылки на dll файл выдаёт: "Can't add a reference to the specified file". Уже и интерфейс добавил в сборку, а всё одно... Твой вариант, кузя, тоже пробовал, результат тот же. Сбит с толку полностью. :(
...
Рейтинг: 0 / 0
17.03.2005, 00:58
    #32964697
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
я добавлял не через Browse (если запущена VS, то файл действительно занят), а выбирал из списка
имя твоего COM компонента, который нужно добавить - это имя_сборки - должен быть в списке
...
Рейтинг: 0 / 0
17.03.2005, 01:11
    #32964700
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
А в списке его нет. Я просто пытаюсь добраться до сборки на другой машине - симулирую возможность достучаться другому человеку до неё. Наверное я всёже как-то не так регистрирую её: dll закинул в system32 и запустил regasm.exe tabcom.dll, а в Reference всё так же пусто...
...
Рейтинг: 0 / 0
17.03.2005, 01:13
    #32964701
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
важна последовательность - создать dll, а только потом запускать VB и добавлять ссылки :)

о, как
...
Рейтинг: 0 / 0
17.03.2005, 01:24
    #32964708
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Не, ну я согласен что я туп, но не настолько всё же! ;)
Перезапускал VB6 - там в Reference есть только TabCom.tlb и больше ничего.
Всё-таки, если не затруднит, чуть поподробнее последовательность действий после оздания dll? Буду крайне благодарен, ибо последние два дня потрачены на решение задачи, а время подгоняет.
...
Рейтинг: 0 / 0
17.03.2005, 02:13
    #32964718
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
1. создаешь новый проект ClassLibrary
2. в один из модулей - свой код
3. транслируешь и получаешь DLL
3а.закрываешь VS.NET
4. из командной строки вызываешь (регистация по месту нахождения сборки, например):
Код: plaintext
1.
regasm С:\Temp\Solution5\ComInterop\bin\Debug\ComInterop.dll /tlb:C:\Temp\So
lution5\ComInterop\bin\Debug\ComInterop.tlb /codebase
обрати внимание на выделение
5. запускаешь VB 6 и создаешь новый проект Standard EXE
6. добавляешь Reference из списка (ОБЯЗАН БЫТЬ ПОСЛЕ РЕГИСТРАЦИИ)
7. вставляешь в нужном месте код типа
Код: plaintext
1.
2.
Dim f As TabCom
Set f = New TabCom
...
...
Рейтинг: 0 / 0
17.03.2005, 02:34
    #32964723
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
+
сборку предпочтительно подписать Strong Name
...
Рейтинг: 0 / 0
17.03.2005, 02:39
    #32964724
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация компонента COM.
Не буду оригинален, но, кузя, ты - супер! :) Всё получилось, ОГРОМНОЕ СПАСИБО тебе за помощь и терпение!
Эту ночь я буду спокойно спать ;)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация компонента COM. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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