仅将 CString 和 CArray 包含到 C++ 项目中
Posted
技术标签:
【中文标题】仅将 CString 和 CArray 包含到 C++ 项目中【英文标题】:Include only CString and CArray into a C++ project 【发布时间】:2013-08-23 22:53:09 【问题描述】:说,出于我的目的,我不需要 MFC 库的全部潜力。 (我在 Visual Studio 2008 中使用它的旧版本。)我还需要提到我针对 MFC 库编译我的项目 statically
以最大限度地减少外部 DLL 依赖项的数量。
所以我认为我可以使用简单的 C++ 控制台应用程序项目,但我想从 MFC“借用”两个类:CString
和 CArray
。
有没有办法将它们只包含在我的控制台应用程序 C++ 项目中?
【问题讨论】:
为什么要 MFC 类?只需使用std::string
和 std::vector
代替
@Praetorian:是的。我知道。在这一点上,这是一个问题或偏好,或以前的经验。
@ahmd0: IIRC, CArray
无论如何都是错误的。
@MooingDuck:很好奇,CArray
有什么问题?
您可能想要使用这个 CString 克隆:codeproject.com/Articles/1146/CString-clone-Using-Standard-C 当我还在 MFC 中编程时,我在与您需要类似的项目中使用了它。
【参考方案1】:
最好的办法是将这些排除在您的项目之外(我尝试过,因为我喜欢 CString 类)。 CString 的大部分方法都可以用 std::string 和 std::stringstream 代替。
【讨论】:
采纳 Adam Galarneau 的绝妙建议:如果可以避免,请不要使用 MFC! MFC 已过时;您应该真正为任何新代码使用现代 API 和库。恕我直言... 谢谢。正如我上面所说的,我在 MFC 方面有很多经验,在这样一个基础层面上学习新东西会让我慢很多。 微软是否提供std::string
和std::vector
?我需要包括什么?
#incldue 根据您的具体用例,如果您需要更多 stl,您还可以使用 QString 和 QByteArray。您只需要链接到 qtcore dll,与 MFC 相比,以后在其他平台上使用相同的代码将更加灵活。尽管 STL 也是如此。
【讨论】:
嗯,我想知道为什么替代解决方案得到-1?需要详细说明吗? “我不需要 MFC 库的全部潜力”。如果已经安装了几个 MFC 头文件是多余的,那么安装 QT 的可能性也很大。 但是 Qt 比 MFC 有两个优点:1) 它是跨平台的,2) 它没有过时(是的......)。当然,如果问题是 C++ 中的“数组”和“字符串”,可以说only 合理的答案是“使用 C++ 标准库”。恕我直言... @paulsm4:是的,我什至有条件地写下了我的答案。 Mooing 没有费心去完全理解。【参考方案3】:使用 CString 不需要 MFC。
如果您#include "atlstr.h",则当前版本的 CString 可用
【讨论】:
是的,我知道。但是CArray
呢?以上是关于仅将 CString 和 CArray 包含到 C++ 项目中的主要内容,如果未能解决你的问题,请参考以下文章
通过 P/Invoke 将 MFC CArray 编组为 C#