返回c#到c++的字符串值
本文关键字:字符串 c++ 返回 | 更新日期: 2023-09-27 18:19:08
如何将字符串从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;
}
int返回类型的c#代码:所以我在c#中这样调用:
int GetErrorCodeOnLoginFailure()
{
return 3 //some return code
}
但是如果我对String return做同样的操作,代码在运行时就会崩溃。
我的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(){返回"6.4.23";}
有什么问题吗?
这个例子对你有用吗?如果不是苏尼尔…那么我不知道该如何协商这个问题
您需要通过引用传递字符串,以便c#代码获得更新的字符串:
int GetString(String^% ValueData)
或者更好:
String^ GetString()
{
char buffer[666]; // Hmya, what to pick?
unmanagedGetString(buffer);
return System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)buffer);
}