Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ATL DLL ядро и интерфейс на C#. 
V
    Опции темы
Elfet
Дата 2.3.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Всем привет!
Мне нужно сделать одну программку сл структуры: всё вычисления на C++ ATL DLL, а интерфейс в C#.
Расскажите или дайте какие-нибудь ссылки про то как создавать ATL DLL на C++? Про то как взаимодействовать из C# с ATL DLL? У меня стоит VS2005.

Заранее спасибо!


--------------------
PM MAIL WWW Skype   Вверх
Partizan
Дата 2.3.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Elfet

Про создание ATL-проекта в VS гугль поможет, я думаю. А взаимодействие осуществляется так же как и с любой другой COM-сборкой...добавляете в References из вкладки COM (dll должна быть зарегистрирована в системе) и используете её классы как хотите.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Elfet
Дата 2.3.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Ещё я что-то видел про DllImport - это что?

А ещё как зарегистрировать в системе эту dll? Можно ли просто в каталоге с папкой эту длл положить? 


--------------------
PM MAIL WWW Skype   Вверх
Rififi
Дата 2.3.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 5
Всего: 36



Elfet
DllImport нужен в случае обычных функций, которые экспортируюся из exe/dll, но не принадлежат com-обьекту
При создании COM, ATL-визард сам его регистрирует в системе
или можно как обычно, regsvr32 mycom.dll
PM MAIL   Вверх
Elfet
Дата 2.3.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Цитата(Rififi @  2.3.2009,  20:24 Найти цитируемый пост)
или можно как обычно, regsvr32 mycom.dll 

Это как - как обычно?

Добавлено через 38 секунд
Можно ли как-нибудь эту ATL DLL бросить в папку с exe-шкой и всё?


--------------------
PM MAIL WWW Skype   Вверх
Partizan
Дата 2.3.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Elfet, а с чем связано такое рвение использовать именно ATL? Обычная библиотека не подойдёт?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Elfet
Дата 2.3.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Что за обычная библиотека? Чем она отличается? 

А вообще мне нужно делать на C++ в ATL по заданию. 


--------------------
PM MAIL WWW Skype   Вверх
Любитель
Дата 2.3.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



ATL предназначенна для создания COM-объектов. Через DllImport, ну можно.. smile Реализовав вручную работу с COM (здесь должен быть значок "не влезать! убьёт!").

Так вот - COM объект в любом случае надо регистрировать в системе. Благо, ATL генерит нужные функции для авторегистрации, так что, действительно, сработает стандартный запуск regsvr32 mylib.dll. А после - обычный COm Reference.


--------------------
PM MAIL ICQ Skype   Вверх
Partizan
Дата 2.3.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Любитель, ну почему же "не влезать, убьёт" =) Совсем даже не убьёт smile

Elfet, в общем, для начала, советую ознакомиться с тем, что такое ATL, и как создаются ATL объекты в студии...ну а потом по ситуации - спрашивать тут  smile 


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 2.3.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Ну, если человек не знает ничего о COM (раз не знаком с regsvr32 - то и с COM в целом, я думаю тоже). То работать с ним вручную...

На всякий случай: речь шла именно про работу с помощью DllImport с COM. А не про использование ДллИмпорта как такового. Т. е. DllGetClassObject/QueryInterface.


--------------------
PM MAIL ICQ Skype   Вверх
Partizan
Дата 3.3.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Любитель, я так и понял) Но ничего особо смертельного там нет) Я предложил человеку первый шаг )

з.ы. кстати говоря, я недавно натыкался у кого-то в блоге на реализацию работы с COM без регистрации сборки...думаю, если понадобится - гугль поможет найти...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 3.3.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Ну.. Если нам известен интерфейс COM-объектов, то работа очевидна. Получаем объект с помощью DllGetClassObject (здесь только CLSID надо правильный передать), затем QueryInteface (аналогично). И кастим к нашему интерфейсу. Юзаем методы.

Если интерфейс неизвестен, то получить его без регистрации невозможно.


--------------------
PM MAIL ICQ Skype   Вверх
Partizan
Дата 3.3.2009, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Любитель, да, всё так smile


Elfet Инфы в топике уже предостаточно ;)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Elfet
Дата 3.3.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Да, всём спасибо!

А есть ещё какие-нибудь варианты кроме ATL DLL для написания вычислительной части программы на C++?


--------------------
PM MAIL WWW Skype   Вверх
Partizan
Дата 3.3.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Elfet, Ну да....как бы создать обычную dll-ку, не связываясь с COM/ATL, и просто дёргая функции через DllImport


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1323 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.