阅读:1833回复:13
请问哪位高手能指点指点(关于DDRAW)?
我用winCE自带的一个directDraw例程,在EVC中建立一个空的工程,把这个例程拷贝添加进去,又在option-directory设定了directX的SDK的包含和库路径,也连接了ddraw.lib等库,compile可以,但built不成功。
连接 错误是: lnk2001:unresolved external symbol _IID_Iunknown 我用的是winCE4.2的DDEX1例子,EVC4.0 这个连接错误是针对DirectDrawCreate函数的 请问哪位高手能指点指点? 多谢! |
|
论坛版主
|
沙发#
发布于:2005-02-03 16:28
把ddraw.def也包含进去,具体怎么加看看类似的sources文件,好像是:DEFFILE=XXX.def
|
|
板凳#
发布于:2005-02-04 08:42
你看看DirectDrawCreate都调用的了什么东东?_IID_Iunknown这个是什么东西?看看是不是还有相应的头文件和库文件没有包含进来?
wxl_50685330 大哥哪天回去?搞到票了吗? [编辑 - 2/4/05 by wwei_wang] |
|
|
地板#
发布于:2005-02-04 09:16
LPDIRECTDRAW4 g_pDD = NULL; // DirectDraw object
LPDIRECTDRAWSURFACE4 g_pDDSPrimary = NULL;// DirectDraw primary surface LPDIRECTDRAWSURFACE4 g_pDDSBack = NULL; // DirectDraw back surface LPDIRECTDRAWSURFACE4 g_pDDSOne = NULL; // Offscreen surface 1 DDSURFACEDESC2 ddsd; DDSCAPS2 ddscaps; HRESULT hRet; LPDIRECTDRAW pDD; hRet = DirectDrawCreate(NULL, &pDD, NULL); if(hRet != DD_OK) { MessageBox(_T("f")); } // Fetch DirectDraw4 interface and release IDirectDraw. hRet = pDD->QueryInterface(IID_IDirectDraw4, (LPVOID *) & g_pDD); if(hRet != DD_OK) { MessageBox(_T("e")); } // Get exclusive mode hRet = g_pDD->SetCooperativeLevel(m_hWnd,DDSCL_NORMAL/*DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT/*DDSCL_NORMAL*/); if(hRet != DD_OK) { MessageBox(_T("d")); } memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; // ddsd.dwBackBufferCount = 1; hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSPrimary, NULL); if(hRet != DD_OK) { MessageBox(_T("c")); } ddscaps.dwCaps = DDSCAPS_BACKBUFFER; // ddscaps.ddsCaps.dwCaps =DDSCAPS_VIDEOMEMORY | DDSCAPS_FLIP; hRet = g_pDDSPrimary->GetAttachedSurface(&ddscaps, &g_pDDSBack); if(hRet != DD_OK) { MessageBox(_T("b")); } memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH; ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ; ddsd.dwWidth = 640; ddsd.dwHeight = 480; hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSOne, NULL); if(hRet != DD_OK) { MessageBox(_T("a")); } 自己研究去吧!EVC4.0下测试通过! |
|
论坛版主
|
地下室#
发布于:2005-02-04 12:49
搞到了,搞到了:)))妈喔,都不打折,好不容易弄到个8折的:))
6号下午走,兄弟喃,过完年一定过来耍哈!!! |
|
5楼#
发布于:2005-02-04 14:44
wxl_50685330: 一路走好,新年快乐哈!
[编辑 - 2/5/05 by wwei_wang] |
|
|
论坛版主
|
6楼#
发布于:2005-02-04 15:16
要得!:)))
|
|
7楼#
发布于:2005-02-04 15:20
no.killer 先生:
我用的程序和你给的程序是一样的,调试不通 wxl_50685330先生: 我把ddraw.def加进去,依然不通 另外:我在网上查找发现,好多人都有这个问题。 |
|
8楼#
发布于:2005-02-05 08:41
no.killer 先生: (1)哥们,我觉得你的编译环境肯定是缺少库和头文件:) (2)另外,我觉得可能和你所用的sdk有关。 [编辑 - 2/5/05 by wwei_wang] |
|
|
论坛版主
|
9楼#
发布于:2005-02-05 12:51
no.killer 先生: 兄弟儿,你到底是调试不通还是编译不过?一样一样的来三 |
|
10楼#
发布于:2005-02-05 13:20
报告连接错误如下:
ddraw.lib(ddclnt.obj) : error LNK2001: unresolved external symbol IID_IUnknown ARMV4IDbg/second.exe : fatal error LNK1120: 1 unresolved externals |
|
|
论坛版主
|
11楼#
发布于:2005-02-05 13:28
少了UUID.LIB
|
|
论坛版主
|
12楼#
发布于:2005-02-05 14:14
好像把COGUID.H和GUIDDEF.H加上就可以了,试试三
|
|
13楼#
发布于:2005-02-05 14:50
wxl_50685330 :
加了UUID.LIB就好了,连接通过,虽然运行有点问题,但已与这个讨论无关。 我给你加分了。 感谢其他所有参与者,谢谢 |
|