c++ - 无法在 VS 2017 应用程序中使用 MFC CObject 类

标签 c++ visual-studio-2017 mfc

我需要使用 MFC 序列化机制来序列化 Product 类的对象:

class Product : public CObject
{
protected:
    string name; 
    int expiring;
    double price;
public:
    Product();
    ~Product();

    virtual void input_data();
    virtual void print_data();
};

这是一个简单的 Windows 控制台应用程序。我在 CObject 上遇到错误:不是类或结构名称。

我尝试按照此评论中的说明制作 MFC 控制台应用程序:https://stackoverflow.com/a/50320168/6543699 .现在我遇到了很多错误(未找到标识符或未声明标识符)。错误文本是俄语的,所以我不在这里复制它们。这是它的样子:Errors

我对 MFC 的使用一无所知,也找不到清楚描述的指南。我的问题是:

1) 是否可以在控制台应用程序(非 MFC)中使用 CObject?如何使用?

2) 如果没有,我应该怎么做才能使用 MFC 序列化?可能包括一些 header 或安装时缺少某些组件?

最佳答案

您只需通过几个步骤调整控制台应用程序即可使用 MFC。首先是包含 afx.h,例如:

#include <iostream>
#include <afx.h>

然后你会想要链接到 MFC 动态库。

项目属性 > 配置属性 > 高级 > 使用 MFC

选择:在共享 DLL 中使用 MFC

现在应该使用 CObject 进行编译。

我的笔记,我不会使用MFC序列化,至少使用Boost Serialization由于经常需要维护版本控制,我很久以前就放弃了使用任何序列化。我发现它是个噩梦。除非您发现您的对象结构将保持相当静态,否则我建议使用 XML 来为您的对象建立数据库。开始需要做一些更多的工作,但通常情况下,您在进行更改时无需担心版本控制。

关于c++ - 无法在 VS 2017 应用程序中使用 MFC CObject 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169021/

相关文章:

c++ - Mingw 不编译由于 "' isblank' 未在此范围内声明“错误

c++ - 如何在Visual Studio中跳过Debug Assertion Failed直接break

c++ - MFC中如何使用_beginthreadex

c++ - 有什么办法可以加快频繁的文件写入操作吗? C文件

c++ - Windows 如何识别非 Unicode 应用程序?

c++ - 强制将文件写入磁盘

c++ - Valgrind 在使用字符串类型成员时识别内存泄漏(使用 nvcc 编译)

c++ - 未定义的 namespace 引用 - gsoap 错误

angular - 在 Visual Studio 的测试资源管理器中发现 Protractor/jasmine 测试?

c++ - 使用 Visual Studio 2017 的 Crypto++ 库链接错误