![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Всем привет!
Мне нужно сделать одну программку сл структуры: всё вычисления на C++ ATL DLL, а интерфейс в C#. Расскажите или дайте какие-нибудь ссылки про то как создавать ATL DLL на C++? Про то как взаимодействовать из C# с ATL DLL? У меня стоит VS2005. Заранее спасибо! |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Elfet,
Про создание ATL-проекта в VS гугль поможет, я думаю. А взаимодействие осуществляется так же как и с любой другой COM-сборкой...добавляете в References из вкладки COM (dll должна быть зарегистрирована в системе) и используете её классы как хотите. -------------------- СУВ, Partizan. |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Ещё я что-то видел про DllImport - это что?
А ещё как зарегистрировать в системе эту dll? Можно ли просто в каталоге с папкой эту длл положить? |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
Elfet,
DllImport нужен в случае обычных функций, которые экспортируюся из exe/dll, но не принадлежат com-обьекту При создании COM, ATL-визард сам его регистрирует в системе или можно как обычно, regsvr32 mycom.dll |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Это как - как обычно? Добавлено через 38 секунд Можно ли как-нибудь эту ATL DLL бросить в папку с exe-шкой и всё? |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Elfet, а с чем связано такое рвение использовать именно ATL? Обычная библиотека не подойдёт?
-------------------- СУВ, Partizan. |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Что за обычная библиотека? Чем она отличается?
А вообще мне нужно делать на C++ в ATL по заданию. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 11 Всего: 92 |
ATL предназначенна для создания COM-объектов. Через DllImport, ну можно..
![]() Так вот - COM объект в любом случае надо регистрировать в системе. Благо, ATL генерит нужные функции для авторегистрации, так что, действительно, сработает стандартный запуск regsvr32 mylib.dll. А после - обычный COm Reference. |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Любитель, ну почему же "не влезать, убьёт" =) Совсем даже не убьёт
![]() Elfet, в общем, для начала, советую ознакомиться с тем, что такое ATL, и как создаются ATL объекты в студии...ну а потом по ситуации - спрашивать тут ![]() -------------------- СУВ, Partizan. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 11 Всего: 92 |
Ну, если человек не знает ничего о COM (раз не знаком с regsvr32 - то и с COM в целом, я думаю тоже). То работать с ним вручную...
На всякий случай: речь шла именно про работу с помощью DllImport с COM. А не про использование ДллИмпорта как такового. Т. е. DllGetClassObject/QueryInterface. |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Любитель, я так и понял) Но ничего особо смертельного там нет) Я предложил человеку первый шаг )
з.ы. кстати говоря, я недавно натыкался у кого-то в блоге на реализацию работы с COM без регистрации сборки...думаю, если понадобится - гугль поможет найти... -------------------- СУВ, Partizan. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 11 Всего: 92 |
Ну.. Если нам известен интерфейс COM-объектов, то работа очевидна. Получаем объект с помощью DllGetClassObject (здесь только CLSID надо правильный передать), затем QueryInteface (аналогично). И кастим к нашему интерфейсу. Юзаем методы.
Если интерфейс неизвестен, то получить его без регистрации невозможно. |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Любитель, да, всё так
![]() Elfet Инфы в топике уже предостаточно ;) -------------------- СУВ, Partizan. |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Да, всём спасибо!
А есть ещё какие-нибудь варианты кроме ATL DLL для написания вычислительной части программы на C++? |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Elfet, Ну да....как бы создать обычную dll-ку, не связываясь с COM/ATL, и просто дёргая функции через DllImport
-------------------- СУВ, Partizan. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |