WINDOWS常见编绎连接错误FAQ

Home / Hackintosh MrLee 2014-12-18 3603

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);

本文链接:https://www.it72.com/465.htm

推荐阅读
最新回复 (0)
返回