将字符串值从C#返回到c ++

时间:2011-12-30 05:26:53

标签: c# c++ com

如何将字符串从C#传递给COM C ++?我已经完成了int并且工作正常。

我的返回类型的COM C ++代码:

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

我的返回类型的C#代码: 所以从C#iam这样调用:

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 :(得分:0)

这个例子对你有用吗?如果不是Sunil ..那么我不知道如何就这个问题进行咨询

您需要通过引用传递字符串,以便C#代码获取更新的字符串:

int GetString(String^% ValueData)

或更好:

String^ GetString() 
{
    char buffer[666];  // Hmya, what to pick?
    unmanagedGetString(buffer);
    return System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)buffer);
}