已经在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: 语法错误 : 缺少“,”(在“<”的前面)
说实话,麻烦的很。
你打开你的 atlbase.h 文件,你会看到:
#ifndef _AFX
template <class T>
class ATL_NO_VTABLE CAtlExeModuleT :
public CAtlModuleT<T>
{
};
#endif // !_AFX
现在你明白为啥找不到定义了吧。
我把
class CCPP_JSModule : public CAtlExeModuleT< CCPP_JSModule >
替换成
class CCPP_JSModule : public CAtlModuleT< CCPP_JSModule >
编译通过了,这样会不会有问题。
@newlist: 问题当然会有,因为 CAtlExeModuleT 是用于 exe 的,CAtlModuleT 是基类。CAtlExeModuleT 有一些自己的方法,当然,你可以测试下。#ifdef _AFX 的话,还有个 CAtlMfcMoudleT 可用,你都可以自己测试下。目前还没理清 _AFX 的影响,如果先建立 MFC exe 程序,再引入 ATL,我觉得会更顺利点。
@Launcher: 电脑坏了一阵子,谢谢哈~