http://blog.csdn.net/bfqiwbifj/article/details/5829715
WINDOWS游戏编程大师技巧-常见编绎连接错误FAQ
1.无法从“const char [10]”转换为“LPCWSTR”
vs6,vs2005的版本问题
解决方案1:
winclass.lpszClassName = (LPCTSTR)WINDOW_CLASS_NAME;
解决方案2:
wndcls.lpszClassName = L"ShadowJack first window";
2.error LNK2019: 无法解析的外部符号 _DirectDrawCreateEx@16,该符号在函数 "int __cdecl
Game_Init(void *,int)" (?Game_Init@@YAHPAXH@Z) 中被引用
解决方案:
项目->属性->链接器->常规->附加库目录:
"E:/Program Files/Microsoft DirectX 9.0 SDK (February 2005)/Lib/x86"
项目->属性->链接器->输入->附加依赖项:
ddraw.lib
E:/Program Files/Microsoft DirectX 9.0 SDK (February 2005)/Include
E:/Program Files/Microsoft DirectX 9.0 SDK (February 2005)/Lib/x86
3.设置协同等级
// set cooperation to normal since this will be a windowed app
lpdd->SetCooperativeLevel(main_window_handle, DDSCL_NORMAL);
// set cooperation to full screen 设置一个全屏窗口
if (FAILED(lpdd->SetCooperativeLevel(main_window_handle,
DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX |
DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
{
// error
return(0);
} // end if
4.设置屏幕分辨率
// set display mode to 640x480x8
if (FAILED(lpdd->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,0,0)))
{
// error
return(0);
} // end if
5.什么是光栅化
现实中的视觉图像是连续的,但是电子屏幕上的图像是一个个的点组成的,叫做像素,要把连续的图
像用离散的像素表示出来就是光栅化了。
6.fatal error C1083: 无法打开包括文件:“dsound.h”: No such file or directory
别忘记了编程时附带,在Project/Setting/Link/ 中加入 strmbasd.lib uuid.lib winmm.lib
将directX sdk下的include文件夹下的.h文件拷贝到VC的include文件夹下
7.error LNK2001: 无法解析的外部符号 _IID_IDirectDraw7
好多初学者在用DX SDK写自己的应用时,都莫名其妙的发现如下几个类似的编译(更准确地说是链接
)错误:
FDraw.obj : error LNK2001: 无法解析的外部符号 _IID_IDirectDraw7
FDraw.obj : error LNK2019: 无法解析的外部符号 _DirectDrawCreate@12 ,该符号在函数 “int
__cdecl DDInitialize(void)” (?DDInitialize@@YAHXZ) 中被引用
FInput.obj : error LNK2001: 无法解析的外部符号 _GUID_SysKeyboard
FInput.obj : error LNK2001: 无法解析的外部符号 _IID_IDirectInput8A
LIBCD.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16 ,该符号在函数
_WinMainCRTStartup 中被引用
dinput8.lib(dilib1.obj) : error LNK2001: 无法解析的外部符号 _GUID_ZAxis
dinput8.lib(dilib1.obj) : error LNK2001: 无法解析的外部符号 _GUID_YAxis
dinput8.lib(dilib1.obj) : error LNK2001: 无法解析的外部符号 _GUID_XAxis
dinput8.lib(dilib2.obj) : error LNK2001: 无法解析的外部符号 _GUID_Key
Debug/sword.exe : fatal error LNK1120: 9 个无法解析的外部命令
而且这种问题是很奇怪的;不过其实并不很复杂。
首先,你大概知道,在使用DX SDK之前,应该在选项里面,把lib和include设置好,不过这并不代表
你的代码在编译的时候会自动应用*.lib(比如说ddraw.lib),你需要在你的DX封装的cpp对应的
header里加上类似的如下几句:
#pragma once
#pragma message("FDraw.h --> Linking with ddraw.lib")
#pragma comment(lib,"ddraw.lib")这几行文字就相当于告诉编译器编译的时候把 ddraw.lib 也编
进去(链接, Link)。
试试看,加上相应的几句,是不是没有什么 error LNK2001 了?
ARPG error LNK2019: 无法解析的外部符号 _DirectDrawCreateEx@16 ,该符号在函数 "int
__cdecl Game_Init(void)" (?Game_Init@@YAHXZ) 中被引用
头文件加入 #pragma comment( lib, "Dxguid.lib")
ARPG error LNK2001: 无法解析的外部符号 _IID_IDirectDraw7
头文件加入#pragma comment( lib, "ddraw.lib")
VS2005,工具->选项->项目和解决方案->VC++目录。在“显示以下内容的目录”里选择:"库文件",
再添加“C:/Program Files/Microsoft DirectX SDK (August 2006)/Lib/x86”
8. Debug Assertion Failed!
File:f:/dd/vctools/crt_bld/self_x86/crt/src/lseek.c
Line:66
Expression:(fh >= 0 (unsigned)fh < (unsigned)_nhandle)
注释T3DLIB1.CPP 中的这一行
// finally the image data itself
_lseek(file_handle,-(int)(bitmap->bitmapinfoheader.biSizeImage),SEEK_END);