Вернуть строковое значение из C # в c ++ - PullRequest
0 голосов
/ 30 декабря 2011

Как передать строку из C # в COM C ++? Я сделал для INT, и он работает нормально.

Мой код COM C ++ для типа возвращаемого значения int:

void ServiceAdapter::GetErrorCode1234()
{
long x;
m_server->GetErrorCodeOnLoginFailure(&x);
//So I get my return code value in x;
}

Мой код C # для типа возвращаемого значения int: Так из C # я звоню вот так:

int GetErrorCodeOnLoginFailure()
{
 return 3 //some return code
}

Но если я сделаю то же самое для возврата String, код будет зависать во время выполнения.

Мой код COM C ++ для типа возвращаемого значения:

BSTR ServiceAdapter::GetVersion1234()
{
BSTR x = :SysAllocString(CCTIUtils:stringToBSTR(L""));
m_server->GetAdapterVersion(&x); // The code is crashing here.
return x;
}

Мой код C # для типа возвращаемого значения:

string GetAdapterVersion () {return "6.4.23"; }

В чем проблема?

1 Ответ

0 голосов
/ 30 декабря 2011

Будет ли этот пример работать на вас ..? если не Сунил .. тогда я не знаю, как проконсультироваться по этому вопросу

Вам нужно передать строку по ссылке, чтобы код C # получил обновленную строку:

int GetString(String^% ValueData)

или еще лучше:

String^ GetString() 
{
    char buffer[666];  // Hmya, what to pick?
    unmanagedGetString(buffer);
    return System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)buffer);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...