c++里的tchar类型对应c#里的什么类型?

itcoco 2011-03-14 11:00:07
我要调用别人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# 里该如何转换?
...全文
804 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhs1931 2011-08-31
  • 打赏
  • 举报
回复
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宏 。
zhs1931 2011-08-31
  • 打赏
  • 举报
回复
TCHAR*,正烦呢
kingcoders 2011-06-22
  • 打赏
  • 举报
回复
我也遇到了这样的问题
missgd152 2011-03-14
  • 打赏
  • 举报
回复
好像是char!
lizhibin11 2011-03-14
  • 打赏
  • 举报
回复
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);
友林 2011-03-14
  • 打赏
  • 举报
回复
StringBuilder
冰川711 2011-03-14
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20081118/21/3edf5b0f-bcb3-4a93-8788-3fef850db4c9.html
sugarforever 2011-03-14
  • 打赏
  • 举报
回复
如果没记错的话, tchar应该是一个宏定义吧。需要看dll里究竟是如何定义的了。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧