关于Unicode字符集的使用问题

dwjxd12 2008-05-02 04:33:53
问题1:项目属性中设置为使用Unicode字符集,程序中使用的第三方接口只支持多字节字符集编译时,提示该接口函数为“无法解析的外部符号”,该错误提示好像和函数的参数无关,不知道是不是接口中有意这样处理,该接口函数是是研究版,不提供支持Unicode字符集
问:有没有办法在项目属性仍为Unicode的情况下,正常使用该函数?

问题2:项目属性中设置为多字节字符集,则CString对象的字符类型为char型问:怎样将CString对象转换成宽字符对象或宽字符格式,如果使用转换函数,怎样取得转换后得到的宽字符的个数?据我了解,转换函数的返回值并不代表宽字符的个数...
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dwjxd12 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 akirya 的回复:]
1
接口使用LPCTSTR这样的参数了么?
要是这样那么你的接口就为const wchar_t*这样的字符串,没有const char*这样的.所以会有链接错误

2见1楼
[/Quote]

原来是自己msdn的e文没看清,我说怎么vs的函数不人性呢,见笑了

非常感谢你再次给我解答。
关于问题一还有一点,接口参数是LPCTSTR类型,这个参数类型是不是表示宽字符的常量指针啊,不明白的是,这个参数到底表示该接口是支持多字节字符集还是Unicode字符集?另外,在项目属性为多字节字符集时,接口可以使用,当改为Unicode字符集时,则不能使用了。我试着在Uncode字符集下,将CString类型转为宽字符格式,可是,好像编译时就提示接口为无法解析的外部符号,不知道在Unicode字符集下,有没有办法使用该接口?是不是因为接口中不提供支持Unicode字符集?可是为什么入口参数类型是LPCTSTR呢?
  • 打赏
  • 举报
回复
1
接口使用LPCTSTR这样的参数了么?
要是这样那么你的接口就为const wchar_t*这样的字符串,没有const char*这样的.所以会有链接错误

2见1楼
thinboyxp 2008-05-04
  • 打赏
  • 举报
回复
用楼上提到的函数转换吧,转成ansi的后传给你的接口函数,闲那2个函数麻烦的话可以用atl的t2a等,可以简化一些...
用户 昵称 2008-05-04
  • 打赏
  • 举报
回复
int s2u(const char* pSrc, BYTE* pDst, int nSrcLength)
{
int nDstLen = 0;
int nOffset = nSrcLength;
int nTotal = 0;
WCHAR wchr[ 4096 ];

try
{
while( nOffset>0 )
{
nDstLen = ::MultiByteToWideChar(CP_ACP, 0, pSrc, nOffset, wchr, 4096);
cnzdgs 2008-05-02
  • 打赏
  • 举报
回复
WideCharToMultiByte:宽字符转多字节,返回值是转换后的字节数;
MultiByteToWideChar:多字节转宽字符,返回值是转换后的字符数。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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