游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1664|回复: 3

[求助][救~命~啊~]我的开发工具有问题!

[复制链接]

2

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2005-5-16 22:05:00 | 显示全部楼层 |阅读模式
是这样的,我用的是VC++ 6.0 和
dx9sdk的Include 库,和它的lib 库。在做下面程序的时候出现了问题:
一个简单的“hello world”程序,用的是DirectDraw 对象。
提示的错误如下:Hello.obj : error LNK2001: unresolved external symbol _DirectDrawCreate@12
Debug/LoseHeart.exe : fatal error LNK1120: 1 unresolved externals
#include <windows.h>
#include <windowsx.h>
#include <ddraw.h>

LPDIRECTDRAW lpDD; // DirectDraw对象
LPDIRECTDRAWSURFACE lpDDSPrimary; // DirectDraw主页面
char szMsg1[] = "Hello World, I am DirectDraw boy !";
char szMsg2[] = "按 ESC 退出";

//函数声明
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
BOOL InitDDraw( void );
void FreeDDraw( void );
//*******************************************************************
//函数:WinMain()
//功能:Win32应用程序入口函数。进行初始化工作,处理消息循环
//*******************************************************************

int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                      LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    //初始化主窗口
    if ( !InitWindow( hInstance, nCmdShow ) )
        return FALSE;
    //初始化DirectDraw环境,并实现DirectDraw功能
    if ( !InitDDraw())
    {
        MessageBox(GetActiveWindow(), "初始化DirectDraw过程中出错!", "Error", MB_OK );
        FreeDDraw();

        DestroyWindow(GetActiveWindow());
        return FALSE;
    }

        //进入消息循环

    while (GetMessage(&msg, NULL, 0, 0))
        {

        TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

    return msg.wParam;
}
//******************************************************************
//函数:InitWindow()
//功能:创建主窗口。
//******************************************************************

static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
    HWND hwnd; //窗口句柄
    WNDCLASS wc; //窗口类结构
    //填充窗口类结构

    wc.style = 0;
    wc.lpfnWndProc = WinProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wc.lpszMenuName = NULL;
        wc.lpszClassName = "dxHello";

        //注册窗口类
        RegisterClass( &wc );


    //创建主窗口
        hwnd = CreateWindowEx(
                                0,
                                "dxHello",
                                "",
                                WS_POPUP,
                                0, 0,
                                GetSystemMetrics( SM_CXSCREEN ),
                                GetSystemMetrics( SM_CYSCREEN ),
                                NULL,
                                NULL,
                                hInstance,
                                NULL );

        if( !hwnd ) return FALSE;
        //显示并更新窗口
        ShowWindow( hwnd, nCmdShow );
        UpdateWindow( hwnd );

    return TRUE;

}

   

//******************************************************************
//函数:WinProc()
//功能:处理主窗口消息
//******************************************************************

LRESULT CALLBACK WinProc( HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam )
{
    switch( message )
    {
        case WM_KEYDOWN://击键消息
            switch( wParam )
            {
                case VK_ESCAPE:
                    PostMessage(hWnd, WM_CLOSE, 0, 0);
                    break;
            }
            break;
        case WM_DESTROY://退出消息
            FreeDDraw();
            PostQuitMessage( 0 );
            break;
    }
//  调用缺省消息处理过程
    return DefWindowProc(hWnd, message, wParam, lParam);
}
//******************************************************************
//函数:InitDDraw()
//功能:初始化DirectDraw环境并实现其功能。包括:创建DirectDraw对象,
// 设置显示模式,创建主页面,输出文字。
//******************************************************************

BOOL InitDDraw(void)
{
    DDSURFACEDESC ddsd; //页面描述
    HDC hdc; //设备环境句柄

    //创建DirectCraw对象
    if ( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) return FALSE;

    // 取得独占和全屏模式
    if ( lpDD->SetCooperativeLevel( GetActiveWindow(),
                    DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ) != DD_OK)
        return FALSE;

    //设置显示模式
    if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE;

    //填充主页面信息
    ddsd.dwSize = sizeof( ddsd );
    ddsd.dwFlags = DDSD_CAPS;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;

    //创建主页面对象
    if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK)
        return FALSE;
    //输出文字
    if ( lpDDSPrimary->GetDC(&hdc) != DD_OK) return FALSE;

    SetBkColor( hdc, RGB( 0, 0, 255 ) );
    SetTextColor( hdc, RGB( 255, 255, 0 ) );
    TextOut( hdc, 220, 200, szMsg1, lstrlen(szMsg1));
    TextOut( hdc, 280, 240, szMsg2, lstrlen(szMsg2));
    lpDDSPrimary->ReleaseDC(hdc);
    return TRUE;
}
//******************************************************************
//函数:FreeDDraw()
//功能:释放所有的DirectDraw对象。
//******************************************************************

void FreeDDraw( void )
{
    if( lpDD != NULL )
    {
        if( lpDDSPrimary != NULL )
        {
            lpDDSPrimary->Release();
            lpDDSPrimary = NULL;
        }
        lpDD->Release();
        lpDD = NULL;
    }
}

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-5-16 23:49:00 | 显示全部楼层

Re:[求助][救~命~啊~]我的开发工具有问题!

error LNK2001: unresolved external symbol _DirectDrawCreate@12
Debug/LoseHeart.exe : fatal error LNK1120: 1 unresolved externals
就够了,不需要帖这么多。
DirectDrawCreate函数所需的lib文件没找到,检查一下连接库设置!

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-17 00:09:00 | 显示全部楼层

Re:[求助][救~命~啊~]我的开发工具有问题!

dxguid ddraw 两个库..
典型的基础没学好.

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2005-5-17 09:00:00 | 显示全部楼层

Re:[求助][救~命~啊~]我的开发工具有问题!

呵呵,初学者刚开始碰到这种问题是很多的
#pragma comment (lib, "xxx.lib")
或者在编译选项里添加差的lib就可以了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 15:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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