VC 2008 加 include "stdafx.h"程序出错

umbrook 2008-10-07 03:21:16
手动写ATL的简单demo.在vc6.0下可以编译成dll.但在vc 2008中
如果在代码头中加入 include "stdafx.h", 程序无法编译通过
error:
Error 21 fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? d:\developer\atlverdll1.0.0\registry.cpp 233 ATLVerDll1.0.0

若在程序中加入#include "stdafx.h"
则很多的错误都出现了包括:
Error 2 error C2653: 'Math' : is not a class or namespace name d:\developer\atldllver1.0.1\math.cpp 5 AtlDllver1.0.1


代码结构如下:
// {376DB866-7079-44b6-ACCA-0EB684E88377}
DEFINE_GUID(CLSID_Math,
0x376db866, 0x7079, 0x44b6, 0xac, 0xca, 0xe, 0xb6, 0x84, 0xe8, 0x83, 0x77);
// {B1823CE9-1C56-401b-AEF9-94AE7204BF54}
DEFINE_GUID(IID_IMath,
0xb1823ce9, 0x1c56, 0x401b, 0xae, 0xf9, 0x94, 0xae, 0x72, 0x4, 0xbf, 0x54);
// {5F7F9EAA-29A1-49ac-BDC4-6DD3B0250582}
DEFINE_GUID(IID_IAdvancedMath,
0x5f7f9eaa, 0x29a1, 0x49ac, 0xbd, 0xc4, 0x6d, 0xd3, 0xb0, 0x25, 0x5, 0x82);
class IMath: public IUnknown
{
STDMETHOD(Add) (long ,long ,long *) PURE;
STDMETHOD(Sub) (long,long,long *) PURE;
STDMETHOD(Mul) (long,long,long *) PURE;
STDMETHOD(Dev) (long,long,long *) PURE;
};
class IAdvancedMath: public IUnknown
{
STDMETHOD(Factorail) (short, long *) PURE;
STDMETHOD(Fibonal) (short, long *) PURE;
};


#include "Math.h"
#include <iostream>
#include "stdafx.h"
//Math class
Math::Math()
{
m_cRef = 0;
cout << "Math construction" << endl;
InterlockedIncrement(&g_lObjs);
}
Math::~Math()
{
cout << "Math deconstruction" << endl;
InterlockedDecrement(&g_lObjs);
}
STDMETHODIMP Math::QueryInterface(REFIID iid, void **ppv)
{

if (iid == IID_IUnknown)
{
*ppv = static_cast<IMath*>(this);
}
else if (iid == IID_IMath)
{
*ppv = static_cast<IMath*>(this);
}
else if (iid == IID_IAdvancedMath)
{
*ppv = static_cast<IAdvancedMath*>(this);
}
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
reinterpret_cast<IUnknown*>(*ppv)->AddRef();
return S_OK;
}
STDMETHODIMP_(ULONG) Math::AddRef()
{
return InterlockedIncrement(&m_cRef);
}
STDMETHODIMP_(ULONG) Math::Release()
{
if (InterlockedDecrement(&m_cRef) == 0)
{
delete this;
return 0;
}
return m_cRef;
}
STDMETHODIMP Math::Add(long op1, long op2, long *pResult)
{
*pResult = op1 + op2;
return S_OK;
}
STDMETHODIMP Math::Sub(long op1, long op2, long *pResult)
{
*pResult = op1 - op2;
return S_OK;
}
STDMETHODIMP Math::Mul(long op1,long op2,long *pResult)
{
*pResult = op1 * op2;
return S_OK;
}
STDMETHODIMP Math::Dev(long op1, long op2, long *pResult)
{
*pResult = op1/op2;
return S_OK;
}

long calcFactorail(short op1)
{
if (op1 == 1)
{return 1;}
else
{
return op1 * calcFactorail(op1-1);
}
}
STDMETHODIMP Math::Factorail(short op1, long *pResult)
{
*pResult = calcFactorail(op1);
return S_OK;
}
long calcFibonal(short op1)
{
if (op1 <= 1)
{
return 1;
}
else
{
return calcFibonal(op1-1)+ calcFibonal(op1-2);
}
}
STDMETHODIMP Math::Fibonal(short op1, long *pResult)
{
*pResult = calcFibonal(op1);
return S_OK;
}
//classFactory
MathClassFactory::MathClassFactory
{
m_cRef = 0;
Cout << "MathClass Constuction" << endl;
}
MathClassFactory::~MathClassFactory()
{
cout << "MathClass Deconstruction" << endl;
}
STDMETHODIMP MathClassFactory::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown || iid == IID_IClassFacory)
{
*ppv = static_cast<IClassFactory*>(this);
}
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
reinterpret_cast<IUnknown*>(*ppv)->AddRef();
return S_OK;
}
STDMETHODIMP_(ULONG) MathClassFactory::AddRef()
{
return InterlockedIncrement(&m_cRef);
}
STDMETHODIMP_(ULONG) MathClassFactory::Release()
{
if (InterlockedDecrement(&m_cRef) == 0 )
{
delete this;
return 0;
}
return m_cRef;
}
STDMETHODIMP MathClassFactory::CreateInstance(LPUNKNOWN pOutUnk,REFIID iid,void **ppv)
{
Math *pMth = NULL;
pMth = new Math;
if (pMth == NULL)
{
return E_OUTOFMEMORY;
}
HRESULT hr = pMth->QueryInterface(iid,ppv);
if (FAILED(hr))
{
delete pMth;
}
return hr;
}
STDMETHODIMP MathClassFactory::LockServer(BOOL fLock)
{
if (fLock)
{
InterlockedIncrement(&g_lLocks);
}
else
{
InterlockedDecrement(&g_lLocks);
}
return S_OK;
}
...全文
290 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
镜机 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zmlovelx 的回复:]
#include "stdafx.h" 应该放在最前面
[/Quote]
同意。
backway 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zmlovelx 的回复:]
#include "stdafx.h" 应该放在最前面
[/Quote]
嵌云阁主 2008-10-07
  • 打赏
  • 举报
回复
同意1楼
minorcxx 2008-10-07
  • 打赏
  • 举报
回复
不是#include "stdafx.h" 的问题
是其他头文件或名字空间问题
帅得不敢出门 2008-10-07
  • 打赏
  • 举报
回复
#include "stdafx.h" 应该放在最前面
内容概要:本文系统研究了基于模型预测控制(MPC)滚动优化的微电网多时间尺度能量管理调度方法,提出了一种结合多时间尺度协调机制与MPC滚动优化框架的调度模型,旨在应对可再生能源出力波动性和负荷不确定性带来的运行挑战。研究详细构建了包含风光储等多种分布式能源的微电网系统架构,设定了以运行成本最小化、碳排放降低和系统稳定性提升为核心的多目标优化函数,并充分考虑设备运行约束、功率平衡约束及储能动态特性等关键因素。文中给出了完整的Python代码实现方案,涵盖模型搭建、优化求解与结果可视化全过程,支持读者复现、验证并进一步拓展算法。该方法有效提升了微电网在复杂运行环境下的经济性、可靠性和低碳化水平。; 适合人群:具备一定电力系统分析基础和Python编程能力,从事微电网、综合能源系统、智能配电网、优化调度等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握MPC在微电网能量管理中的建模思想与实现流程;② 复现并改进多时间尺度调度模型,服务于学术论文撰写或实际项目开发;③ 深入理解滚动优化、预测误差修正与多时间尺度协调控制的技术内涵与工程价值。; 阅读建议:建议读者结合所提供的Python代码逐模块学习,理解各时间尺度(如日前、日内、实时)之间的衔接逻辑,配合优化理论与电力系统运行知识进行深入分析,鼓励在仿真平台中调整参数、设置不同场景以测试模型鲁棒性,从而全面提升对先进能量管理系统的设计与应用能力。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧