d:\wu31\test_temp\10_8\test9\test9.cpp(189) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.
代码如下:
// test9.cpp : Defines the entry point for the application.
//
//#include "stdafx.h"
//
//功能:这个文件创建了一个Direct3D对象和一个Direct3D设备,
//并使用一个窗口作为渲染目标表面
//
//-------------------------------------------------
//包含Direct3D头文件
#include<d3d8.h>
#define MY_WINCLASS_NAME "Direct3D"LPDIRECT3D8 g_pMyD3D = NULL;
LPDIRECT3DDEVICE8 g_pMyd3dDevice = NULL;HRESULT InitMy3D(HWND hWnd)
{
if (NULL==(g_pMyD3D = Direct3DCreate8(D3D_SDK_VERSION)))
return E_FAIL;D3DDISPLAYMODE d3ddm;
if(FAILED(g_pMyD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm)))
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;
if(FAILED(g_pMyD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pMyd3dDevice)))
{return E_FAIL;
}
return S_OK;
}VOID Cleanup()
{
if(g_pMyd3dDevice !=NULL)
g_pMyd3dDevice->Release();
if(g_pMyD3D!=NULL)
g_pMyD3D->Release();
return;
}//MsgProc()
LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{switch(msg)
{case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
g_pMyd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,NULL,1.0f,0);g_pMyd3dDevice->Present(NULL,NULL,NULL,NULL);
ValidateRect(hWnd,NULL);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
//-----------------------------------------int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here. WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,MY_WINCLASS_NAME,NULL};
RegisterClassEx(&wc);
HWND hWnd = CreateWindow(MY_WINCLASS_NAME,"ss",
WS_OVERLAPPEDWINDOW,
100,100,400,300,
GetDesktopWindow(),
NULL,
wc.hInstance,
NULL);//HWND hWnd = CreateWindow( MY_WINCLASS_NAME, "3D游戏编程——渲染场景",
// WS_OVERLAPPEDWINDOW, 100, 100, 400, 300,
// GetDesktopWindow(), NULL, wc.hInstance, NULL );
// CreateWindow(
if (SUCCEEDED(InitMy3D(hWnd)))
{
ShowWindow(hWnd,SW_SHOWDEFAULT);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} Cleanup();
UnregisterClass(MY_WINCLASS_NAME,wc.hInstance);
return 0;
}
Error executing cl.exe.
代码如下:
// test9.cpp : Defines the entry point for the application.
//
//#include "stdafx.h"
//
//功能:这个文件创建了一个Direct3D对象和一个Direct3D设备,
//并使用一个窗口作为渲染目标表面
//
//-------------------------------------------------
//包含Direct3D头文件
#include<d3d8.h>
#define MY_WINCLASS_NAME "Direct3D"LPDIRECT3D8 g_pMyD3D = NULL;
LPDIRECT3DDEVICE8 g_pMyd3dDevice = NULL;HRESULT InitMy3D(HWND hWnd)
{
if (NULL==(g_pMyD3D = Direct3DCreate8(D3D_SDK_VERSION)))
return E_FAIL;D3DDISPLAYMODE d3ddm;
if(FAILED(g_pMyD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm)))
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;
if(FAILED(g_pMyD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pMyd3dDevice)))
{return E_FAIL;
}
return S_OK;
}VOID Cleanup()
{
if(g_pMyd3dDevice !=NULL)
g_pMyd3dDevice->Release();
if(g_pMyD3D!=NULL)
g_pMyD3D->Release();
return;
}//MsgProc()
LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{switch(msg)
{case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
g_pMyd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,NULL,1.0f,0);g_pMyd3dDevice->Present(NULL,NULL,NULL,NULL);
ValidateRect(hWnd,NULL);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
//-----------------------------------------int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here. WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,MY_WINCLASS_NAME,NULL};
RegisterClassEx(&wc);
HWND hWnd = CreateWindow(MY_WINCLASS_NAME,"ss",
WS_OVERLAPPEDWINDOW,
100,100,400,300,
GetDesktopWindow(),
NULL,
wc.hInstance,
NULL);//HWND hWnd = CreateWindow( MY_WINCLASS_NAME, "3D游戏编程——渲染场景",
// WS_OVERLAPPEDWINDOW, 100, 100, 400, 300,
// GetDesktopWindow(), NULL, wc.hInstance, NULL );
// CreateWindow(
if (SUCCEEDED(InitMy3D(hWnd)))
{
ShowWindow(hWnd,SW_SHOWDEFAULT);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} Cleanup();
UnregisterClass(MY_WINCLASS_NAME,wc.hInstance);
return 0;
}
Fatal Error C1010
unexpected end of file while looking for precompiled header directiveA precompiled header was specified, but it did not contain a precompiled header directive.This error can be caused by specifying an incorrect file as a header file, or by specifying an include file with the /Yu (Use Precompiled Header) command line option that is not listed in the source file as an include file.--d3d8.h是不是应放到工程中来呀
这里怎么行啊 ?
//-----------------------------------------------------------------------------
// 名称: CreateDevice.cpp
//
// 功能: 这个文件创建了一个Direct3D对象和一个Direct3D设备,并使用一个窗口作为
// 渲染目标表面。
//
//-----------------------------------------------------------------------------// 包含Direct3D头文件
#include <d3d8.h>// Windows类的名称宏定义
#define MY_WINCLASS_NAME "Direct3D"// 定义全局变量
LPDIRECT3D8 g_pMyD3D = NULL; // 定义Direct3D对象的指针
LPDIRECT3DDEVICE8 g_pMyd3dDevice = NULL; // 定义Direct3D设备指针
//-----------------------------------------------------------------------------
// 名称: InitD3D()
// 功能: 初始化3D环境的函数,函数中创建了Direct3D对象和Direct3D设备。
// 函数返回E_FAIL表示失败,返回E_OK表示成功。
//-----------------------------------------------------------------------------
HRESULT InitMy3D( HWND hWnd )
{
// 创建Direct3D对象,是使用Direct3D的第一步操作
if( NULL == ( g_pMyD3D = Direct3DCreate8( D3D_SDK_VERSION ) ) )
return E_FAIL; // 获取当前Windows桌面的显示模式,保存到定义的d3ddm结构中
D3DDISPLAYMODE d3ddm;
if( FAILED( g_pMyD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
return E_FAIL; // 定义Present结构
D3DPRESENT_PARAMETERS d3dpp; // 把结构清零,创建设备时,结构中成员值为0表示使用缺省值
ZeroMemory( &d3dpp, sizeof(d3dpp) ); // 指定创建的Direct3D是支持窗口的设备
d3dpp.Windowed = TRUE; // 指定交换效果为D3DSWAPEFFECT_DISCARD,即把后台表面显示到前台表面以后,
// 原来的后台表面包含的信息自动丢失
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 后台缓冲区的的点格式与当前显示模式的点格式一致
d3dpp.BackBufferFormat = d3ddm.Format; // 创建Direct3D设备:
// 1. 使用主显卡创建设备,参数D3DADAPTER_DEFAULT
// 2. 设备类型为硬件抽象设备,使用硬件加速功能,参数D3DDEVTYPE_HAL
// 3. 使用前面创建的窗口用于目标表面的显示,参数hWnd
// 4. 指定设备的对于顶点的处理能力为软件处理顶点,这是为了能够让所有
// 的显卡支持,参数D3DCREATE_SOFTWARE_VERTEXPROCESSING
if( FAILED( g_pMyD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pMyd3dDevice ) ) )
{
return E_FAIL;
} return S_OK;
}
//-----------------------------------------------------------------------------
// 名称: Cleanup()
// 功能: 释放创建过的Direct3D对象和设备
//-----------------------------------------------------------------------------
VOID Cleanup()
{
// 释放时的顺序为先释放后创建的对象,设备后创建,先释放
if( g_pMyd3dDevice != NULL)
g_pMyd3dDevice->Release(); // Direct3D对象最先创建,但需要最后释放
if( g_pMyD3D != NULL)
g_pMyD3D->Release(); return;
}
//-----------------------------------------------------------------------------
// 名称: MsgProc()
// 功能: Windows的消息处理函数
//-----------------------------------------------------------------------------
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
PostQuitMessage( 0 );
return 0; case WM_PAINT:
// 清除渲染目标表面,使用的颜色是RGB(255,255,255),即白色
g_pMyd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 );
// 把渲染目标表面显示到窗口的客户区域
g_pMyd3dDevice->Present( NULL, NULL, NULL, NULL );
ValidateRect( hWnd, NULL );
return 0;
} return DefWindowProc( hWnd, msg, wParam, lParam );
}//-----------------------------------------------------------------------------
// 名称: WinMain()
// 功能: Windows主函数,程序启动时,从这里开始执行
//-----------------------------------------------------------------------------
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// 定义一个Windows类,指定消息的处理函数为MsgProc
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
MY_WINCLASS_NAME, NULL };
// 注册这个窗口类
RegisterClassEx( &wc ); // 创建应用程序窗口
HWND hWnd = CreateWindow( MY_WINCLASS_NAME, "3D游戏编程——创建Direct3D对象和设备",
WS_OVERLAPPEDWINDOW, 100, 100, 400, 300,
GetDesktopWindow(), NULL, wc.hInstance, NULL ); // 调用InitMy3D函数进行3D对象和设备的创建,传入参数为窗口的句柄hWnd
if( SUCCEEDED( InitMy3D( hWnd ) ) )
{
// 显示窗口
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd ); // 程序主循环,进行窗口消息的分发,消息的处理在MsgProc函数中完成
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
} // 调用Cleanup函数清除3D对象和设备
Cleanup(); // 注销窗口类
UnregisterClass( MY_WINCLASS_NAME, wc.hInstance );
return 0;
}