Microsoft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE

Posted

技术标签:

【中文标题】Microsoft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE【英文标题】:Microsft Visual Studio C++ 2019 compile error with IMPLEMENT_DYNCREATE 【发布时间】:2020-09-26 10:21:43 【问题描述】:

我正在开发一个需要运行多任务的程序,以便我可以运行计时器。

这是包含文件 (MyRunTimers.h):

#pragma once
#include <afxwin.h>

class MyRunTimers :
    public CObject

    int     m_nNum;
    bool m_bDone = FALSE;
    CObject* m_pOwner = NULL;
    bool m_bAutoDelete = FALSE;

    void MyTimerThread();

public:
     DECLARE_DYNAMIC(MyRunTimers)

protected:
    MyRunTimers::MyRunTimers();

    MyRunTimers::~MyRunTimers();

;

这是 cpp 文件 (MyRunTimers.cpp):

#include "pch.h"
#include "MyRunTimers.h"

IMPLEMENT_DYNCREATE(MyRunTimers, CObject)

MyRunTimers::MyRunTimers()

    m_bDone = FALSE;
    m_pOwner = NULL;
    m_bAutoDelete = FALSE;


MyRunTimers::~MyRunTimers()


当我尝试编译时,IMPLEMENT_DYNCREATE 以红色突出显示,我得到:

`E0135 - class "MyRunTimers" has no member "CreateObject"

【问题讨论】:

E0135 不是编译器或链接器错误。您是否收到任何编译器或链接器错误?如果有,它们是什么? 您还应该将严格来说不正确的protected: MyRunTimers::MyRunTimers(); MyRunTimers::~MyRunTimers(); 更改为protected: MyRunTimers(); ~MyRunTimers(); 无需在类定义中仅在外部使用MyRunTimers:: 【参考方案1】:

如果类声明(头文件)中有DECLARE_DYNAMIC(MyClass),那么定义文件中需要IMPLEMENT_DYNAMIC(MyClass, BaseClass)

或者,如果您确实需要 IMPLEMENT_DYNCREATE(),那么您应该在类定义中包含DECLARE_DYNCREATE()

有关差异的讨论,请参见此处:Why should i use DECLARE_DYNAMIC instead of DECLARE_DYNCREATE?。

【讨论】:

以上是关于Microsoft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE的主要内容,如果未能解决你的问题,请参考以下文章

如何下载microsoft visual studio

microsoft visual studio 2010下载

Microsoft visual c++弹窗?

怎么用microsoft visual studio制作一个选择题

Microsoft Visual C++ Runtime Libuary

microsoft visual studio软件怎样把游戏导出来