游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2368|回复: 6

求解编译问题。。。。

[复制链接]

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2011-1-29 13:35:00 | 显示全部楼层 |阅读模式
#include <ddraw.h>
HWND hwnd;
LPDIRECTDRAW7 lpDD; // DirectDraw对象的指针
LPDIRECTDRAWSURFACE7 lpDDSPrimary; // DirectDraw主页面的指针
LPDIRECTDRAWSURFACE7 lpDDSBuffer; // DirectDraw后台缓存的指针
LPDIRECTDRAWSURFACE7 lpDDSBack; // 存放背景图的页面的指针

BOOL InitDDraw( )
{
        DDSURFACEDESC2 ddsd; // DirectDraw的页面描述
        if ( DirectDrawCreateEx (NULL, (void **)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
                return FALSE; //创建DirectDraw对象
        //这里使用了 if ( xxx != DD_OK) 的方法进行错误检测,这是最常用的方法
        if (lpDD->SetCooperativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK )
                return FALSE; //设置DirectDraw控制级
        if ( lpDD->SetDisplayMode( 640, 480, 32, 0, DDSDM_STANDARDVGAMODE ) != DD_OK )
                return FALSE; //设置显示模式
        //开始创建主页面,先清空页面描述
        memset(&ddsd, 0, sizeof(DDSURFACEDESC2));
        //填充页面描述
        ddsd.dwSize = sizeof( ddsd );
        ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT; //有后台缓存
        ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
        ddsd.dwBackBufferCount = 1; //一个后台缓存
        if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK )
                return FALSE; //创建主页面
        ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; //这是后台缓存
        if ( DD_OK != lpDDSPrimary->GetAttachedSurface( &ddsd.ddsCaps, &lpDDSBuffer ) )
                return FALSE; //创建后台缓存
        ddsd.dwSize = sizeof( ddsd );
        ddsd.dwFlags = DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT;
        ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; //这是离屏页面
        ddsd.dwHeight=480; //高
        ddsd.dwWidth=640; //宽
        if ( DD_OK != lpDD->CreateSurface( &ddsd, &lpDDSBack, NULL ) )
                return FALSE; //创建放背景图的页面
        //如还有别的页面可在此处继续创建
        return TRUE;
}
编译的时候提示
------Configuration: 11 - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/11.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

11.exe - 2 error(s), 0 warning(s)

这个是书上的代码,但怎么搞都不懂问什么都不能编译,学不下去了。求救啊!

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-1-29 16:33:00 | 显示全部楼层

Re:求解编译问题。。。。

没人啊。。。。。

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-1-29 16:56:00 | 显示全部楼层

Re:求解编译问题。。。。

不用着急,真的学不下去了,未必不是件好事。
是你想要的,你终究会得到,不是你想要的,你怎么也得不到。

ddraw的库没添加吧?
要么手动用#pragma comment(lib, "???.lib")
要么在项目属性里设置依赖库
另外还要设置开发环境,设置ddraw所需要的头文件包含目录和库目录

PS:怎么现在还用ddraw?写什么东西用的?维护旧项目?网上载的demo?还是在看《windows游戏编程大师技巧》?

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-1-29 18:03:00 | 显示全部楼层

Re:求解编译问题。。。。

我在看 游戏编程指南 这本,找不到其他的更易懂的啦、刚刚开始学什么都不懂。
ddraw.lib dxguid.lib已经添加了

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-1-29 20:29:00 | 显示全部楼层

Re: Re:求解编译问题。。。。

honers: Re:求解编译问题。。。。

我在看 游戏编程指南 这本,找不到其他的更易懂的啦、刚刚开始学什么都不懂。
ddraw.lib dxguid.lib已经添加了


还是编译不了?
是不是你哪个地方用了windows库,比如timeGetTime(),需要加上winmm.lib库
另外,如果你是刚学游戏开发,我还是建议你学DX9,不要说DX9是3D,DX9和3D可以说没有一点关系。
可以留意一本叫做《DirectX游戏开发终极指南》的书,或者《Direct9.0游戏开发编程基础》,或者你可以找到一本你认为通俗易懂的关于DX9的书。

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-1-29 20:39:00 | 显示全部楼层

Re:求解编译问题。。。。

谢谢!!!!

1

主题

33

帖子

33

积分

注册会员

Rank: 2

积分
33
QQ
发表于 2011-1-30 12:06:00 | 显示全部楼层

Re:求解编译问题。。。。

估计是缺少库文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-16 13:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表