以有崖求无崖
2018-10-16 06:23
采纳率: 85.7%
浏览 1.2k

请问我在c#中用动态链接库的方式引入一个c++dll,在调用dll中的接口时,入参类型像这样转换是否正确?

依照这个dll的接口文档描述,它这个接口的入参是这样的:
long OltpTransData(unsigned long msgType,unsigned long packageType,unsigned long packageLength,char *str,LPTSTR com);

            c#代码中的引入,我是这么写的:
    [DllImport("OltpTransIc1701.dll", SetLastError = false)]
    public static extern long OltpTransData(long msgType, long packageType, long packageLength, ref string str, [MarshalAs(UnmanagedType.LPTStr)] string com);

            请问这么转换入参类型是否正确?
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2018-10-16 07:26
    已采纳

    C++的long在有的编译器里相当于int,你可以用sizeof(long)看下
    unsigned long对应C#的ulong和uint
    char *str用StringBuilder

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Eleven 2018-10-16 07:23

    最后一个参数是IN-OUT吗?

    评论
    解决 无用
    打赏 举报
  • 太平牛市 2018-10-16 09:23

    你这种方式必须要采用动态加载参数了 因为看你的问题 好像你的参数不是固定的

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题