【发布时间】:2010-09-10 20:05:03
【问题描述】:
如果我将项目从在共享 DLL 中使用 MFC 切换到在静态库中使用 MFC,则以下代码将无法编译:
class Test : public CObject
{
public:
//DECLARE_DYNCREATE(Test); // If I uncomment this line, it works
};
class Test2 : public Test
{
public:
DECLARE_DYNCREATE(Test2);
};
IMPLEMENT_DYNCREATE(Test2, Test); // <-- error C2039: 'classTest' : is not a member of 'Test'
不过,如果我取消注释 DECLARE_DYNCREATE(Test),它会起作用。我在文档中找不到任何内容说基类必须使用 DECLARE_DYNCREATE,或者静态链接或共享链接之间存在差异。
问题是我有一些不使用 DYNCREATE 宏的第三方代码。有谁知道为什么静态链接时要求会有所不同,以及是否有办法在不使用 DECLARE_DYNCREATE 声明基类的情况下解决这个问题?
谢谢。
【问题讨论】:
标签: mfc static-linking