本帖最后由 oniman123 于 2013-10-24 16:28:52 编辑

解决方案 »

  1.   

    补充说明,param1为输入参数,param2,param3为输出函数!
      

  2.   

    char类型数组传入用string,传出用stringbuilder,stringbuilder必须带指定长度进行初始化。
      

  3.   


    看看这里的吧,C++与C#类型跨平台转换
    http://msdn.microsoft.com/zh-cn/library/ac7ay120(v=vs.90).aspx
      

  4.   

    导入命名空间:
    using System.Runtime.InteropServices;声明:
     [DllImport("xxxx.dll", CallingConvention = CallingConvention.Cdecl)]
            static extern uint GetKey([MarshalAs(UnmanagedType.LPStr)] string param1, [MarshalAs(UnmanagedType.LPStr)] string param2, ref uint param3);调用:
     string param1 = "".PadLeft(40, ' ');
                string param2 = "".PadLeft(24, ' ');
                uint param3 = 0;            uint ret = GetKey(param1, param2, ref param3);