全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1180
推到 Plurk!
推到 Facebook!

DirectDraw err一問

答題得分者是:RaynorPao
Chenbc
一般會員


發表:31
回覆:33
積分:12
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-13 16:52:45 IP:61.59.xxx.xxx 未訂閱
程式有用到DirectDraw,在Compiler時有一個error,不解,因在目錄內己有UNIT1.OBJ這支檔.    [Linker Error] Unresolved external 'DirectDrawCreate' referenced from D:\1TEST\DETECTOVERLAY\UNIT1.OBJ  請指導一下..  
 
//---------------------------------------------------------------------------    #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        void __fastcall FormCreate(TObject *Sender);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
        bool __fastcall DetectOverlayCapability(void);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
     //---------------------------------------------------------------------------    #include 
#include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{    }
//---------------------------------------------------------------------------
bool __fastcall TForm1::DetectOverlayCapability(void)
{
LPDIRECTDRAW lpDirectDraw;
DDCAPS ddcaps;
HRESULT hr;    ZeroMemory(&ddcaps, sizeof(ddcaps));
ddcaps.dwSize = sizeof(ddcaps);
hr = DirectDrawCreate(NULL, &lpDirectDraw, NULL);
if (FAILED(hr))
return false;
hr = lpDirectDraw->GetCaps(&ddcaps, NULL);
if (FAILED(hr))
return false;
if (!(ddcaps.dwCaps & DDCAPS_OVERLAY))
{ShowMessage("Not Overlay");return false;}
{ShowMessage("Overlay");return true;}
}    void __fastcall TForm1::FormCreate(TObject *Sender)
{
  bool aa;
DetectOverlayCapability();
}
//---------------------------------------------------------------------------     
發表人 - chenbc 於 2004/05/13 17:08:47
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-13 19:53:49 IP:61.221.xxx.xxx 未訂閱
引言: 程式有用到DirectDraw,在Compiler時有一個error,不解,因在目錄內己有UNIT1.OBJ這支檔. [Linker Error] Unresolved external 'DirectDrawCreate' referenced from D:\1TEST\DETECTOVERLAY\UNIT1.OBJ 請指導一下..
 
//---------------------------------------------------------------------------    #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        void __fastcall FormCreate(TObject *Sender);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
        bool __fastcall DetectOverlayCapability(void);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
     //---------------------------------------------------------------------------    #include 
#include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{    }
//---------------------------------------------------------------------------
bool __fastcall TForm1::DetectOverlayCapability(void)
{
LPDIRECTDRAW lpDirectDraw;
DDCAPS ddcaps;
HRESULT hr;    ZeroMemory(&ddcaps, sizeof(ddcaps));
ddcaps.dwSize = sizeof(ddcaps);
hr = DirectDrawCreate(NULL, &lpDirectDraw, NULL);
if (FAILED(hr))
return false;
hr = lpDirectDraw->GetCaps(&ddcaps, NULL);
if (FAILED(hr))
return false;
if (!(ddcaps.dwCaps & DDCAPS_OVERLAY))
{ShowMessage("Not Overlay");return false;}
{ShowMessage("Overlay");return true;}
}    void __fastcall TForm1::FormCreate(TObject *Sender)
{
  bool aa;
DetectOverlayCapability();
}
//---------------------------------------------------------------------------    
Chenbc 你好:
(1)除了 #include "ddraw.h" 以外,你還必須把 ddraw.lib 加入你的專案
(2)在 BCB 開發環境中按「View/Project Manager」出現「Project Manager」
   Dialog,在你的專案名稱上面 (Tree) 按滑鼠右鍵,選擇「Add」把以下的檔
   案加入你的 Project,重新 compile 應該就可以了
   C:\Program Files\Borland\CBuilder6\Lib\Psdk\ddraw.lib
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
Chenbc
一般會員


發表:31
回覆:33
積分:12
註冊:2004-01-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-13 20:25:38 IP:61.59.xxx.xxx 未訂閱
謝謝RaynorPao, 果真是高手.
系統時間:2024-11-23 2:07:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!