zoukankan      html  css  js  c++  java
  • c#调用c++开发的dll const char* 返回值接收问题

    用c#调用视频接口相关的dll,dll使用c++开发。

    c++接口定义如下:

    PLATFORM const char* Plat_GetValueStr(const char* propertyName, int iUserHandle);

    c#接口定义如下:

    [DllImport(@"Platform.dll", EntryPoint = "Plat_GetValueStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
            extern static IntPtr Plat_GetValueStr(string propertyName, int iUserHandle);

    遇到的问题及解决方法:

    1、在c#调用时一开始 CharSet = CharSet.Ansi 没有定义 出现过乱码。c++中的编码为ansi,c#默认可能是Unicode。这里需要注意一下。

    2、对于c++ 返回值类型为  const char* 我一开始用String 接收,在framework4.0下也成功过,但有时成功,有时失败。在framework2.0下,从来没成功过。后来改用指针接收,成功接收了。

    IntPtr ipName = Plat_GetValueStr(ConstControlUnit.ControlUnitName, iUserHandle);
    ResName= Marshal.PtrToStringAnsi(ipName);
  • 相关阅读:
    夜半饮酒
    邀你到成都来
    成都,我的天堂
    真不想松开你的手
    创业,你懂如何求人办事么?
    只要你愿意
    【五月的歌】重振山河
    成都,我爱你
    就算忘了自己也忘不了你
    假如
  • 原文地址:https://www.cnblogs.com/yisean/p/5028128.html
Copyright © 2011-2022 走看看