Войти
ПрограммированиеФорумЗвук

Использование managed C++ в проектах

#0
23:14, 13 мая 2011

-> Имеется .NET class library, в коде что-то вроде

if (FAILED(hr = XAudio2Create(&m_pixAudio2,
      0,
      XAUDIO2_DEFAULT_PROCESSOR
      ))) ...
Результат сборки:
error C2440: 'type cast' : cannot convert from 'cli::interior_ptr<Type>' to 'IXAudio2 **'

Help, please..


#1
23:18, 13 мая 2011

pin_ptr<> все дела...

#2
23:23, 13 мая 2011

Wraith, благодарю за помощь :)

Однако что-то вроде этого:

  pin_ptr< IXAudio2 **>( &m_pixAudio2) ?

#3
23:37, 13 мая 2011

Да хрен его разберет...
Покажи, как объявлено m_pixAudio2.
Короче, если оно как IXAudio2^ - то так вообще вроде нельзя, и надо врапить анменеджед поинтер в классец и создавать тот через __gcnew. Как-то так. Наверное все же есть уже стандартный враппер COM-поинтера, может можно его заюзать.

#4
0:01, 14 мая 2011

IXAudio2 *m_pixAudio;

Есть что-то подобное, попробую разобраться сам:

generic<typename T> where T : value class
  Buffer ^ CreateVertexBuffer (array<T> ^ elements)
{
  /* получаем указатель на начало массива
    */
  pin_ptr<T> p = &(elements[0]);

  /* получили сырой указатель,
    * который можно передать в неуправляемый код
    */
  void * address = p;
}


За помощь еще раз спасибо !

PS: Если интересует, то http://habrahabr.ru/blogs/programming/47732/

ПрограммированиеФорумЗвук

Тема в архиве.

Тема закрыта.