游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1142|回复: 1

编译错误的问题

[复制链接]

16

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2007-12-18 12:43:00 | 显示全部楼层 |阅读模式
正在链接...
LINK : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
CreateDevice.obj : error LNK2019: 无法解析的外部符号 _Direct3DCreate9@4 ,该符号在函数 "long __cdecl InitD3D(struct HWND__ *)" (?InitD3D@@YAJPAUHWND__@@@Z) 中被引用
LIBCD.lib(crt0.obj) : error LNK2019: 无法解析的外部符号 _main ,该符号在函数 _mainCRTStartup 中被引用
.\Debug/CreateDevice.exe : fatal error LNK1120: 2 个无法解析的外部命令


设置了 附加依赖项d3d9.lib(列表中没有d3d9.lib的,是手打的) 后

LINK : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
LIBCD.lib(crt0.obj) : error LNK2019: 无法解析的外部符号 _main ,该符号在函数 _mainCRTStartup 中被引用
.\Debug/CreateDevice.exe : fatal error LNK1120: 1 个无法解析的外部命令

那位高手能帮忙
谢谢

16

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2007-12-18 12:44:00 | 显示全部楼层

Re:编译错误的问题

加上代码:

/**-----------------------------------------------------------------------------
* \brief 创建设备
* 文件: CreateDevice.cpp
*
* 说明: 创建D3D设备, 学习清除画面的方法.
*      
*
**-----------------------------------------------------------------------------
*/
/// 使用的Direct3D9的首部
#include <d3d9.h>




/**-----------------------------------------------------------------------------
* 全局参数
*------------------------------------------------------------------------------
*/
LPDIRECT3D9             g_pD3D       = NULL; /// 创建D3D 设备的D3D对象参数
LPDIRECT3DDEVICE9       g_pd3dDevice = NULL; /// 渲染中使用的D3D设备




/**-----------------------------------------------------------------------------
* Direct3D初始化
*------------------------------------------------------------------------------
*/
HRESULT InitD3D( HWND hWnd )
{
    /// 创建一个用来创建设备的D3D对象
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;

    D3DPRESENT_PARAMETERS d3dpp;                /// 创建设备的结构体
    ZeroMemory( &d3dpp, sizeof(d3dpp) );        /// 必须调用ZeroMemory()函数将结构体清零.
    d3dpp.Windowed = TRUE;                      /// 创建窗口模式
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;   /// 最有效的SWAP效果
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;    /// 建立一个与当前显示模式相匹配的后置缓冲

    /// 按照以下设置,创建设备.
    /// 1. 使用缺省设置的显卡(大部分显卡都是一个).
    /// 2. 创建HAL设备(使用HW加速装置).
    /// 3. 顶点处理由支持所有显卡的SW创建(由HW创建性能更佳).
    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }

    /// 处理设备状态信息时,从这里进行.

    return S_OK;
}


/**-----------------------------------------------------------------------------
* 删除初始化对象.
*------------------------------------------------------------------------------
*/
VOID Cleanup()
{
    if( g_pd3dDevice != NULL)
        g_pd3dDevice->Release();

    if( g_pD3D != NULL)
        g_pD3D->Release();
}



/**-----------------------------------------------------------------------------
* 绘图.
*------------------------------------------------------------------------------
*/
VOID Render()
{
    if( NULL == g_pd3dDevice )
        return;

    /// 将后置缓冲清除,同时设置为蓝色(0,0,255).
    g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
   
    /// 开始渲染
    if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
    {
        /// 实际渲染命令列
   
        /// 结束渲染
        g_pd3dDevice->EndScene();
    }

    /// 显示后置缓冲的画面!
    g_pd3dDevice-&gtresent( NULL, NULL, NULL, NULL );
}




/**-----------------------------------------------------------------------------
* 窗口过程
*------------------------------------------------------------------------------
*/
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
        case WM_DESTROY:
            Cleanup();
            PostQuitMessage( 0 );
            return 0;

        case WM_PAINT:
            Render();
            ValidateRect( hWnd, NULL );
            return 0;
    }

    return DefWindowProc( hWnd, msg, wParam, lParam );
}




/**-----------------------------------------------------------------------------
* 本程序的起始地址
*------------------------------------------------------------------------------
*/
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    /// 注册窗口类
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      "D3D Tutorial", NULL };
    RegisterClassEx( &wc );

    /// 创建窗口
    HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 01: CreateDevice",
                              WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
                              GetDesktopWindow(), NULL, wc.hInstance, NULL );

    /// Direct3D初始化
    if( SUCCEEDED( InitD3D( hWnd ) ) )
    {
        /// 显示窗口
        ShowWindow( hWnd, SW_SHOWDEFAULT );
        UpdateWindow( hWnd );

        /// 消息循环
        MSG msg;
        while( GetMessage( &msg, NULL, 0, 0 ) )
        {
            TranslateMessage( &msg );
            DispatchMessage( &msg );
        }
    }

    /// 删除注册的类
    UnregisterClass( "D3D Tutorial", wc.hInstance );
    return 0;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 15:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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