首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MFC和CString可以互换吗?

MFC和CString可以互换吗?
EN

Stack Overflow用户
提问于 2020-03-16 12:05:14
回答 1查看 85关注 0票数 0

我正在尝试在ANSI编译器中使用DLL。其中一个DLL函数采用空指针。在随DLL提供的一些示例Windows代码中,传递给函数的结构被定义为具有三个CString实体。我已经告诉DLL的作者,他们不应该通过他们的DLL函数传递MFC类。他们告诉我只要用字符数组替换结构中的CString声明就可以了。我99%确定这是错误的,但由于我没有VC++,也没有任何使用MFC的经验,而且我看到一些帖子说LPTSTR可以用来代替CString (What is CString?),我开始怀疑我是不是错了。

有没有人能帮我确认一下,CString和LPTSTR不能作为函数的参数互换?如果您能提供定义CString类的源代码,这将很有帮助,因此我可以将其发送给DLL的作者,并解释字符数组的内存占用不同于CString类,并且您不能传递指向使用字符数组定义的结构的指针,然后将其视为一堆CString对象。

EN

回答 1

Stack Overflow用户

发布于 2020-03-16 14:57:58

CStringCStringT类模板的别名。这个类的对象最好不要传递给DLL。string类的字符类型可以是TCHAR (对于ANSI和Unicode字符串-参见下面的说明)。CString (和CStringT)的定义很可能在atlstr.h头文件中找到。

LPTSTR是指向字符序列的常规指针。数据类型(TCHAR*)取决于开发环境的设置:如果选择了"Use Unicode Character set“选项,则TCHAR数据类型将为wchar_t ( LPTSTR将分别为wchar_t* )。如果选择“使用多字节字符集”,TCHAR将被定义为char ( LPTSTR将被定义为char*)。

因此,关于CStringLPTSTR之间的互换性的问题并不那么简单。它还取决于DLL的编写方式。如果动态链接库的环境设置与主程序相同,那么CStringLPTSTR确实可以互换。

另外,请记住,CStirng是一个包含许多方法的类,而LPTSTR只是一个指针。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60700202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档