如何将字符串从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”; }
问题是什么?
答案 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);
}