| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Указатель как тип возвращаемого значения функции |
| Автор: CYBERDREAM 15.11.2007, 18:54 | ||||
| Приветсвую всех. Столкнулся со следующей проблемой. Переписываю код с плюсов на шарп, и у одной функции возвращаемый параметр является указателем на структуру, как быть в случае шарпа?
вот что получил на шарпе:
как правильно объявить функцию? |
| Автор: 0000 15.11.2007, 19:13 | ||
| так..сначала написал неподумавши - не скомпилит =) надо приписать атрибут [MarshalAs(UnmanagedType.LPStruct)] щас... вот описание если что: http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices.unmanagedtype.aspx Добавлено через 9 минут и 3 секунды попробуй так:
|
| Автор: CYBERDREAM 15.11.2007, 22:15 |
| Ошибочка в итоге абсолютно та же, хотя по идее должно именно так работать, |
| Автор: 1stain 15.11.2007, 23:36 |
| CYBERDREAM, у тебя в примере написано public struct READER{}; в коде так же? |
| Автор: CYBERDREAM 16.11.2007, 09:12 |
| да, а в чем загвоздка то? в том, что стркутура пустая? на плюсах она так и представляется как и описано выше? или нужно иначе? |
| Автор: 1stain 16.11.2007, 09:25 | ||
в структуре надо прописать ее поля. Например, COLORREF для того, чтобы принять его из unmanaged объявляется так
в принципе, методы можно не объявлять (первый вариант). Достаточно объявить в структуре все поля в таком же порядке и соответствующих типов, как в неуправляемом варианте (если структура содержит массивы там немного больше геморроя с их объявлением). И не забыть атрибут [StructLayout(LayoutKind.Sequential)] можешь посмотреть здесь много примеров взаимодействия с unmanaged кодом : http://pinvoke.net/index.aspx кстате COLORREF именно оттуда |
| Автор: CYBERDREAM 16.11.2007, 09:29 | ||
Ок, если должны быть поля (я и сам такого мнения), то почему на плюсах их нету
или я что-то не улавливаю |
| Автор: 1stain 16.11.2007, 10:34 |
| честно сказать, я вообще в плюсах (т.е. в mapi.h) не нашел определения структуры READER. Насколько я понял, это какая-то сторонняя библиотека? Если есть исходники, то ты смотрел заголовочные файлы? |
| Автор: CYBERDREAM 16.11.2007, 10:42 | ||||
вот что в mapi_control.h находится:
по документации собственно вот: This file “mapi_control.h” defines a generic handle type for established connections between the application and the reader as follows.
|
| Автор: CYBERDREAM 16.11.2007, 13:31 | ||
Работающий вариант:
Спасибо большое 0000 и 1stain за помощь!!! |