Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2012, 13:32   #1
BodyZ
 
Регистрация: 28.08.2009
Сообщений: 3
Печаль void* в C#

Добрый день

Есть DLL, которая предоставляет функцию с такой сигнатурой
int Control (int Num, int Cmd_Number, void *pIn)
В зависимости от номера Cmd_Number, через переменную pIn передается в DLL или из DLL некий указатель на буфер данных различной структуры и длины.
Есть необходимость наладить связь с этой DLL из C#.
При попытке объявить сигнатуру функции Control компилятор выдает ошибку . Ему не нравится такая запись => void *pIn
Подскажите пожалуйста как можно обойти эту проблему.
Изменить DLL не представляется возможным
BodyZ вне форума Ответить с цитированием
Старый 25.10.2012, 22:31   #2
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

Код:
IntPtr pIn
потом по мере надобности Marshal.PtrToStructure позволит получить нужный вид
m0nax вне форума Ответить с цитированием
Старый 26.10.2012, 20:40   #3
BodyZ
 
Регистрация: 28.08.2009
Сообщений: 3
По умолчанию

Спасибо. Буду пробовать
BodyZ вне форума Ответить с цитированием
Старый 27.10.2012, 04:43   #4
GeorgeLucas
Пользователь
 
Аватар для GeorgeLucas
 
Регистрация: 20.10.2012
Сообщений: 11
По умолчанию

IntPtr правильно посоветовали, это прямой аналог void* в C#.

Но можно сделать еще лучше - объявить несколько разных вариантов этой функции принимающей на вход разные виды структур по ссылке (ref). Тогда можно не париться ручной конвертацией, C# сам будет вызывать нужную версию функции и формировать unmanaged представление данных.
GeorgeLucas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
void TrimRight( char *s ) Den-is C# (си шарп) 5 09.02.2012 20:46
что делает void doctorvra4 Помощь студентам 9 28.11.2011 18:32
void to struct (C++) slim>>> Помощь студентам 1 13.01.2011 20:52
Return(void) tools Visual C++ 5 22.12.2010 12:19
Загадка void`а Voipp Общие вопросы C/C++ 4 08.09.2009 17:29