не могу вытащить string из управляемого кода
От: sect0id  
Дата: 28.01.11 08:00
Оценка:
Здравствуйте! столкнулся с проблемой вытаскивания строки из c# в с++...

есть код на c#

namespace MyInterop
{
public interface IMyDotNetInterface2
{
int Add(int Number1, int Number2);
[return: MarshalAs(UnmanagedType.BStr)] string say();

public class MyDotNetClass : IMyDotNetInterface2
{

public string say()
{
return "OK";
}

public int Add(int Number1,int Number2)
{
return Number1+Number2;
}
}
}
}

не могу вытащить "OK" из функции say();
пробовал так:
Код C++

myfunc(){
CoInitialize(NULL);
MyInterop::IMyDotNetInterface2Ptr pDotNetCOMPtr2(__uuidof(MyDotNetClass));

long lResult = 0;
pDotNetCOMPtr2->Add(5,10, &lResult);
myfile<<"\nCOM5="<<lResult; //тут всё ок

BSTR test_lResult = SysAllocString(L"");
pDotNetCOMPtr2->say(&test_lResult);
myfile<<"\nCOM6="<<test_lResult; //тут выводит "00070F84"
}

подскажите пожалуйста как вытащить string? буду очень благодарен, спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.