首页 新闻 会员 周边

在ATL中支持MFC,CAtlExeModuleT未定义

0
悬赏园豆:10 [已解决问题] 解决于 2012-09-14 21:55

已经在stdafx.h文件包含了这些文件

#include "resource.h"

#include <afx.h>
#include <atlbase.h>
#include <atlcom.h>
#include <atlapp.h>
#include <atlwin.h>
#include <comutil.h>
#include <MMSystem.h>
#include <UrlMon.h>
#include <atlstr.h>


#include <mshtmdid.h>
#include <mshtml.h>
#include <exdispid.h>
#include <exdisp.h>

同时也在属性配置中对MFC的支持做了设置

错误提示

但还是提示这两个错误

1>d:\javascript调用c++示例\js调用c++示例\cpp_js\cpp_js.cpp(9): error C2504: “CAtlExeModuleT”: 未定义基类
1>d:\javascript调用c++示例\js调用c++示例\cpp_js\cpp_js.cpp(9): error C2143: 语法错误 : 缺少“,”(在“<”的前面)

一枚程序的主页 一枚程序 | 初学一级 | 园豆:108
提问于:2012-08-15 16:33
< >
分享
最佳答案
0

说实话,麻烦的很。

你打开你的 atlbase.h 文件,你会看到:

#ifndef _AFX

template <class T>
class ATL_NO_VTABLE CAtlExeModuleT :
 public CAtlModuleT<T>

{
};

#endif // !_AFX

现在你明白为啥找不到定义了吧。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2012-08-15 16:43

我把

class CCPP_JSModule : public CAtlExeModuleT< CCPP_JSModule >

替换成

class CCPP_JSModule : public CAtlModuleT< CCPP_JSModule >

编译通过了,这样会不会有问题。

一枚程序 | 园豆:108 (初学一级) | 2012-08-15 17:17

@newlist: 问题当然会有,因为 CAtlExeModuleT 是用于 exe 的,CAtlModuleT 是基类。CAtlExeModuleT 有一些自己的方法,当然,你可以测试下。#ifdef _AFX 的话,还有个 CAtlMfcMoudleT 可用,你都可以自己测试下。目前还没理清 _AFX 的影响,如果先建立 MFC exe 程序,再引入 ATL,我觉得会更顺利点。

Launcher | 园豆:45045 (高人七级) | 2012-08-15 17:23

@Launcher: 电脑坏了一阵子,谢谢哈~

一枚程序 | 园豆:108 (初学一级) | 2012-09-14 21:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册