![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| LLlaMaH |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
ситуация такова:
dll написаная на c++ возвращает массив byte* нужно положить этот массив в byte[] вариант номер раз: unsafe public static byte[] ConvertToCS(byte* bt, int dim) { byte[] res = new byte[dim]; for(int x=0;x<dim;x++) { res[x] = bt[x]; } return res; } вариант номер два: unsafe public static byte[] ConvertToCS(byte* bt, int dim) { byte[] res = new byte[dim]; IntPtr objectPtr = (IntPtr)bt; Marshal.Copy(objectPtr, res, 0, dim); GC.Collect(); return res; } размер массивов почти всегда 512... внимание вопрос.... почему не чувствуется разница в скорости.... ... функция конвертации прогоняется 30-40 тысяч раз... нужно выйграть в скорости... подскажите как еще можно это сделать.... причем циклом получилось быстрее чем через маршал...не пойму я чавото... Это сообщение отредактировал(а) LLlaMaH - 8.6.2007, 10:38 |
|||
|
||||
| Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: 3 Всего: 18 |
А почему бы в DllImport в описании функции сразу не заменить byte* на byte[]? Или не прокатывает?
|
|||
|
||||
| LLlaMaH |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
падает с ошибкой
Невозможно упаковать "return value": Недопустимое сочетание управляемого и неуправляемого типов. |
|||
|
||||
| tol05 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
попробуй так
ref - как раз и передает массив по ссылке, или, другими словами, ссылку на массив P.S. Кхгм... Короче, я имел в виду не
а в описании функции использовать
Это сообщение отредактировал(а) tol05 - 10.6.2007, 14:28 -------------------- На хорошей работе и сны хорошие снятся. |
||||||
|
|||||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Как именно из dll возвращается массив?
Рекомендую обратить внимание на MarshalAsAttribute. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |