我要调用别人c++的dll,有个方法的参数是 TCHAR (&Cmd)[10],请问我在c#里应该转成什么类型?int GetBackInfo( TCHAR (&Cmd)[10]) 是dll的用户手册的说明
我c#里转换成 
        [DllImport("Protocol.dll" )]
        public static extern Int32 GetBackInfo( out Char[]   CmdTitle);  //这里我尝试用字节数组, 字符串数组,都报异常。调用代码
            byte[] title = new byte[10];
            Char[] CmdTitle = new Char[10];
          
            //String title = String.Empty;
            try
            {
                DLLInterface.GetBackInfo(out feedResult, out CmdTitle);
 
            }
            catch(Exception e)
            {
                System.Console.WriteLine(e.Message);
            }请问TCHAR (&Cmd)[10]  我在c# 里该如何转换?

解决方案 »

  1.   

    http://topic.csdn.net/u/20081118/21/3edf5b0f-bcb3-4a93-8788-3fef850db4c9.html
      

  2.   

    TCHAR (&Cmd)[10]是一个值,不是指针,所以在c#中用ref out都是不对的。
    c中的int在c#应该是short。
    TCHAR要看dll中如何定义,可能是byte,也可能是char。
    如果你要传的值是二进制八位的,就用byte,否则用char。
    [DllImport("Protocol.dll" )]
    public static extern short GetBackInfo(byte CmdTitle); 
      

  3.   

    如果没记错的话, tchar应该是一个宏定义吧。需要看dll里究竟是如何定义的了。
      

  4.   

    TCHAR:TCHAR其实是一个宏,其定义为:view sourceprint?1 #ifdef UNICODE  2 typedef wchar_t TCHAR;  3 #else  4 typedef char TCHAR;  5 #endif 也就是说,如果我们使用unicode编码,那么TCHAR指的就是wchat_t,如果我们使用的是ASCII编码,那么TCHAR指的就是char,这样处理的目的是为了程序的可移植性。T表示在Win32环境中, 有一个_T宏 。