powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация компонента COM.
19 сообщений из 19, страница 1 из 1
Реализация компонента COM.
    #32962767
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача на 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
Реализация компонента COM.
    #32962787
ooops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
отослал человеку, который должен иметь возможность из FoxPro использовать Square, но он жалуется, что не можетчто именно он не может

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

ЗЫ
можно сделать инсталляшку для проекта и все это дело включить в нее
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32963139
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! :) А то вроде всё делал по инструкции и уж не знал что ещё и придумать.
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32963934
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем попробовал из Excel проверить свой COM, сделал reference на tlb-файл, но выдаётся сообщение на ActiveX component can't create object. Может быть нужно создавать строгое имя сборки? Что-то чем дальше, тем всё хуже выглядит с этим комом...
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964005
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто знает, тыкнете меня где можно почитать про реализацию данного сабжа
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964010
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем тебе 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
Реализация компонента COM.
    #32964056
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+
ЗЫ относится к проекту на C# :) - это проект ClassLibrary
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964376
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, кузя, большое спасибо! Буду сейчас пробовать. :)
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964692
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь при добавлении в Reference в VB6 ссылки на dll файл выдаёт: "Can't add a reference to the specified file". Уже и интерфейс добавил в сборку, а всё одно... Твой вариант, кузя, тоже пробовал, результат тот же. Сбит с толку полностью. :(
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964697
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я добавлял не через Browse (если запущена VS, то файл действительно занят), а выбирал из списка
имя твоего COM компонента, который нужно добавить - это имя_сборки - должен быть в списке
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964700
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в списке его нет. Я просто пытаюсь добраться до сборки на другой машине - симулирую возможность достучаться другому человеку до неё. Наверное я всёже как-то не так регистрирую её: dll закинул в system32 и запустил regasm.exe tabcom.dll, а в Reference всё так же пусто...
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964701
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
важна последовательность - создать dll, а только потом запускать VB и добавлять ссылки :)

о, как
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964708
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, ну я согласен что я туп, но не настолько всё же! ;)
Перезапускал VB6 - там в Reference есть только TabCom.tlb и больше ничего.
Всё-таки, если не затруднит, чуть поподробнее последовательность действий после оздания dll? Буду крайне благодарен, ибо последние два дня потрачены на решение задачи, а время подгоняет.
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964718
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Реализация компонента COM.
    #32964723
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+
сборку предпочтительно подписать Strong Name
...
Рейтинг: 0 / 0
Реализация компонента COM.
    #32964724
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не буду оригинален, но, кузя, ты - супер! :) Всё получилось, ОГРОМНОЕ СПАСИБО тебе за помощь и терпение!
Эту ночь я буду спокойно спать ;)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация компонента COM.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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