![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| semeiskii |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.4.2008 Репутация: нет Всего: нет |
Здравствуйте.
Довелось написать COM-сервер. Есть некий метод, описанный IDL, который я должен реализовать:
Я его реализовал:
При компиляции ошибки: The type or namespace name 'BSTR' could not be found (are you missing a using directive or an assembly reference?) Pointers and fixed size buffers may only be used in an unsafe context The type or namespace name 'HRESULT' could not be found (are you missing a using directive or an assembly reference?) Пробовал писать так:
Ругается: The type name 'BSTR' does not exist in the type 'System.Data.OleDb.OleDbType' При создании проекта выбирал Visual C#->Windows->Class Library. Нашел в msdn что BSTR описан в OLEAuto.h, но ума не приложу как его подключить. Не include же писать? Это сообщение отредактировал(а) semeiskii - 26.4.2008, 21:28 |
||||||
|
|||||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
semeiskii,
.NET маппит этот тип на String при указании UnmanagedType.BStr в аттрибуте MarshalAs |
|||
|
||||
| semeiskii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.4.2008 Репутация: нет Всего: нет |
А кто должен писать MarshalAs?
Тот кто пишет интерфейс, или тот кто его реализует. Интерфейс у меня подключен как Reference->COM. Т.е. его исходников нет. |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
тот, кто пишет интерфейс.
если у тебя реализация на c#, то думаю всё должно быть проще. по умолчанию студия генерирует интерфейсы и классы совместимыми с COM (тогда класс будет поддерживать только позднее связывание через IDispatch), для других вариантов настроить это можно через аттрибут ClassInterface/InterfaceType |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |