Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация c# COM для использования как DllSurrogate в c# / 7 сообщений из 7, страница 1 из 1
18.12.2018, 12:29
    #39749372
Ciplusor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
Всем привет. Есть c# AnyCPU проект к которому нужно подключить левую x86 библиотеку. Сразу скажу - все примеры и статьи на первых 15-ти страницах гугла и яндекса проверил - ни одно не работает именно для c#. Для Delphi, C++ - COM успешно импортируется и вызывает как удаленный объект.

Итак, я создал COM проект, к нему собралась библиотека типов, сам COM зарегистрирован в списке доступных COM. Когда я пытаюсь подключить этот COM к проекту чтобы среда создала промежуточный Interop Dll - она попросту ругается что .NET сборка в .NET проекте должна быть подключена как ссылка, т.е. требует прямое подключение самой dll от COM в проект - но если я ее подключаю, то логично что он ее просто импортирует как библиотеку типов и использует в разрядности своего процесса.

Перепробовал уйму вариантов tlbimp, tlbexp, regasm - по результату одно и то же, "библиотека типов была экспортирована из сборки .NET и не может быть использована в качестве ссылки". Насколько я понимаю нужно как-то отвязать библиотеку от .NET - т.е. получается что сам .NET сам с собой не дружит. Неужели нет вариантов .NET interop COM использовать в .NET?
...
Рейтинг: 0 / 0
18.12.2018, 13:12
    #39749409
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
Ciplusor.NET - т.е. получается что сам .NET сам с собой не дружит
это документированное поведение
...
Рейтинг: 0 / 0
18.12.2018, 18:46
    #39749780
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
Ciplusor,

подлючай динамически.
...
Рейтинг: 0 / 0
18.12.2018, 18:53
    #39749786
askabout
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
hVostt,

перезвони мне, хватить прятаться
...
Рейтинг: 0 / 0
19.12.2018, 22:39
    #39750521
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
Ciplusor,

Сильно не вникал, но может быть Вам нужно [dllimport ...] ?

http://www.dream-land.by/developer/csharp/win_api/
...
Рейтинг: 0 / 0
20.12.2018, 09:28
    #39750602
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
CiplusorВсем привет. Есть c# AnyCPU проект к которому нужно подключить левую x86 библиотеку. Сразу скажу - все примеры и статьи на первых 15-ти страницах гугла и яндекса проверил - ни одно не работает именно для c#. Для Delphi, C++ - COM успешно импортируется и вызывает как удаленный объект.

Итак, я создал COM проект, к нему собралась библиотека типов, сам COM зарегистрирован в списке доступных COM. Когда я пытаюсь подключить этот COM к проекту чтобы среда создала промежуточный Interop Dll - она попросту ругается что .NET сборка в .NET проекте должна быть подключена как ссылка, т.е. требует прямое подключение самой dll от COM в проект - но если я ее подключаю, то логично что он ее просто импортирует как библиотеку типов и использует в разрядности своего процесса.

Перепробовал уйму вариантов tlbimp, tlbexp, regasm - по результату одно и то же, "библиотека типов была экспортирована из сборки .NET и не может быть использована в качестве ссылки". Насколько я понимаю нужно как-то отвязать библиотеку от .NET - т.е. получается что сам .NET сам с собой не дружит. Неужели нет вариантов .NET interop COM использовать в .NET?что из этого верно?
...
Рейтинг: 0 / 0
21.12.2018, 09:02
    #39751140
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация c# COM для использования как DllSurrogate в c#
А так не будет работать?

dynamic com = Type.GetTypeFromProgID("MyDLL");

если учесть, что второй опциональный параметр в GetTypeFromProgID - имя сервера, то COM-объект передается как ссылка. Да и работает такой метод с MSOffice любой разрядности.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация c# COM для использования как DllSurrogate в c# / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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