using namespace System::Runtime::InteropServices;
class StringConverter
{
private:
void* m_psz;
public:
StringConverter(String* s)
{
#ifdef UNICODE
m_psz = Marshal::StringToHGlobalUni(s).ToPointer();
#else
m_psz = Marshal::StringToHGlobalAnsi(s).ToPointer();
#endif
}
~StringConverter()
{
Marshal::FreeHGlobal(m_psz);
}
operator LPCTSTR() { return (LPCTSTR)m_psz; }
};
Вопрос скорее по С# чем С++
возвращает обыкновенный [COLOR=blue]char[/COLOR]* тоесть текстовую строку.
Подскажите пожалуста как привести указатель на строку к типу [COLOR=blue]string[/COLOR].
Цитата:
Originally posted by BigBug
Проэкт на С# исспользует DLL одна из функций которого
возвращает обыкновенный [COLOR=blue]char[/COLOR]* тоесть текстовую строку.
Подскажите пожалуста как привести указатель на строку к типу [COLOR=blue]string[/COLOR].
Проэкт на С# исспользует DLL одна из функций которого
возвращает обыкновенный [COLOR=blue]char[/COLOR]* тоесть текстовую строку.
Подскажите пожалуста как привести указатель на строку к типу [COLOR=blue]string[/COLOR].
по идее проблем быть не должно, т.к. в С# все типы, кроме числовых размещаются в куче (referenced types).
если не получится напрямую, попробуй через маршаллинг, типа такого:
Код:
код на managed c++