C#调用VC编写的DLL,传入什么参数对应VC的LPCTSTR?

huang1196 2010-06-07 10:41:14
[DllImport("A.DLL")]
public static extern int fun(参数1, 参数2);

在用VC编写的这个A.DLL中
函数是int fun(LPCTSTR s1, LPCTSTR s2);
并且已经通过宏定义为Unicode

请问在C#中如何声明与调用?

public static extern int fun(string, string)?
public static extern int fun(cahr[], char[])?
好像都不好用啊
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gomoku 的回复:]
[DllImport("...", CharSet=CharSet.Unicode)]
public static extern int fun(string s1, string s1);

1. C++定义为Unicode,那么LPCTSTR就等于LPCWSTR。所以要定义CharSet为Unicode。
2. LPCTSTR里面的C修饰为const,传入string就可以了。
[/Quote]

不错。真细心,都没仔细看,你写的真仔细

LPCTSTR

LP:长指针,c语法中有段地址和虚拟地址之分,c++下都是虚拟地址了,但保留了LP
C :Const,不能修改内容
T :表明后面是TCHAR类型,虽然TCHAR不一定是UNICODE,这个要看是否定义了UNICODE宏,但大多数情况,还是表示unicode的。
STR:就是说是一个'\0'结尾的字符串

你很细心的看到了C,T。赞。
soaringbird 2010-06-08
  • 打赏
  • 举报
回复
string只能用于传入,StringBuilder可以传入传出
huang1196 2010-06-08
  • 打赏
  • 举报
回复
什么时候用string什么时候用stringBuilder?
但是我在dll里面打印传入的这个字符串
使用string和StringBuilder都打不出来啊
就是传递不进去值

[Quote=引用 1 楼 ly302 的回复:]
stringbuilder

或者

string
[/Quote]
gomoku 2010-06-08
  • 打赏
  • 举报
回复
[DllImport("...", CharSet=CharSet.Unicode)]
public static extern int fun(string s1, string s1);

1. C++定义为Unicode,那么LPCTSTR就等于LPCWSTR。所以要定义CharSet为Unicode。
2. LPCTSTR里面的C修饰为const,传入string就可以了。
studyERPMES2010 2010-06-08
  • 打赏
  • 举报
回复
友情帮顶...
兔子-顾问 2010-06-07
  • 打赏
  • 举报
回复
楼上真快。就是这2种。
皇城龙三 2010-06-07
  • 打赏
  • 举报
回复
stringbuilder

或者

string

110,533

社区成员

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

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

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