做一个项目要用到DirectDraw。项目本身有ddraw.h和ddraw.lib两个文件。而dxguid.lib是从VC6的这个目录下(C:\\Program Files\\Microsoft Visual Studio\\VC98\\LIB\\DXGUID.LIB)找到的,所以不确定是不是DirectDraw所需要的dxguid.lib。然后在对话框工程源文件中添加了下面的代码。#include "ddraw.h"
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")并在【右键点击解决方案---属性---配置属性--链接器---常规---附加库目录】中添加了“/ddraw.lib /dxguid.lib”这两个库的链接。但是却提示错误无法解析的外部符号 _IID_IDirectDraw7,这到底是怎么回事啊???是ddraw.lib或dxguid.lib不起作用???还是其它方面的原因???
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")并在【右键点击解决方案---属性---配置属性--链接器---常规---附加库目录】中添加了“/ddraw.lib /dxguid.lib”这两个库的链接。但是却提示错误无法解析的外部符号 _IID_IDirectDraw7,这到底是怎么回事啊???是ddraw.lib或dxguid.lib不起作用???还是其它方面的原因???
解决方案 »
- 如何寻找自己想要的API函数?
- 求一个抽奖系统!
- MFC的线程状态、模块状态、线程模块状态是在什么时候生成的?在WinMain之前吗?
- 用Delphi编写的如何翻译成C语言,赋有源码,在线等!谢谢!
- 用winsock实现C/S通讯,服务器端如何得到客户端的IP地址以及发送的IP数据包?
- if the parameter is a[] in a function,what does it mean?
- 怎么从文本框里得到值放入WCHAR类型里?
- xml属性名规范,允许哪些字符
- 怎样在安全模式下加载驱动服务?
- 有兴趣吗?
- 现在发现使用http下载的路径中有空格,导致无法下载,应该怎么处理
- 关于 error C2664 在线等 请高手进啊
{
LPDIRECTDRAW7 lpDD; // DirectDraw 对象指针
LPDIRECTDRAWSURFACE7 lpDDSPrimary; // DirectDraw 主表面指针
LPDIRECTDRAWSURFACE7 lpDDSOffScr; // DirectDraw 离屏表面指针
DDSURFACEDESC2 ddsd; // DirectDraw 表面描述 // 创建DirectCraw对象
if (DirectDrawCreateEx(NULL, (VOID**)&lpDD, IID_IDirectDraw7, NULL) != DD_OK)
{
//MessageBox("Error Create DDraw.");
return FALSE;
} // 设置协作层
if (lpDD->SetCooperativeLevel(/*hWnd*/GetDlgItem(STATIC_SHOWVIDEO)->m_hWnd,
DDSCL_NORMAL | DDSCL_NOWINDOWCHANGES) != DD_OK)
{
//MessageBox("Error Create Level.", s);
return FALSE;
} // 创建主表面
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if (lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL) != DD_OK)
{
//MessageBox("Error Create Primary Surface.", s);
return FALSE;
} LPDIRECTDRAWCLIPPER pcClipper; // Cliper
if( lpDD->CreateClipper( 0, &pcClipper, NULL ) != DD_OK )
return FALSE; if( pcClipper->SetHWnd( 0, /*hWnd*/GetDlgItem(STATIC_SHOWVIDEO)->m_hWnd ) != DD_OK )
{
pcClipper->Release();
return FALSE;
} if( lpDDSPrimary->SetClipper( pcClipper ) != DD_OK )
{
pcClipper->Release();
return FALSE;
} // Done with clipper
pcClipper->Release();
// 创建YUV表面
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
ddsd.dwWidth = /*drawwidth*/ m_rcClientRect.Width();
ddsd.dwHeight = /*drawheight*/ m_rcClientRect.Height();
ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
ddsd.ddpfPixelFormat.dwFlags = DDPF_FOURCC | DDPF_YUV ;
ddsd.ddpfPixelFormat.dwFourCC = MAKEFOURCC('Y','V', '1', '2');
ddsd.ddpfPixelFormat.dwYUVBitCount = 8;
if (lpDD->CreateSurface(&ddsd, &lpDDSOffScr, NULL) != DD_OK)
{
//MessageBox("Error Create Off Surface.", s);
return FALSE;
} return TRUE;
}
问题解决了,ddraw.h版本太旧了