feijidada 2020-06-03 05:25 采纳率: 50%
浏览 230
已采纳

C++ ALT COM组件 返回的BSTR 为何 c# 调用只有一个字节

最近研究 com组件的 调用语言是c#

STDMETHODIMP CStrHelper::ReadMemoryTokey(BSTR PId, BSTR Key, BSTR* strarray)
{
    // TODO: 在此处添加实现代码

  ///Pid转换
    CString a = PId;
    //字符串转整数
    int i = _ttoi(a);
    //字符串转16进制字符串
    string strTemp = dec2hex(i);
    CString strPId =(CString)strTemp.c_str();
    //16进制字符串转DWord
    DWORD DPId = _tcstoul(strPId, NULL, 16);


//key转换
    CString Sttkey = Key;
    int len = (Sttkey.GetLength() / 3) + 1;
    BYTE *Refbyte = new BYTE[len];
    int a5 = strToarray(Key, Refbyte);
    byte* key = strToarray(Key);


    std::string *str = new string();


    BOOL a3 = SearchMemory(DPId, Refbyte, len, str);

    CString refstr(*str->c_str());

    *strarray = refstr.AllocSysString();

COM的值是 {0x0101269c L"521324"}
c# 返回的值是 52

代码 就是这么一个代码 但是 我c#那边 返回到的字符串 只有前2位 实在不知道原因 希望有大佬解下疑惑

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-06-03 10:28
    关注

    C#的代码没有看到不好说
    C#的缓冲区长度怎么设置的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环