windows 游戏编程大师技巧中 tidlib2 link的一个小问题。

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:55:52
游戏初学《windows游戏编程大师技巧》在链接方面老有问题
该代码是原书463页的一个实例程序。讲的是一个可以在地图上走动的人。。

source 中已含:
demo9_1.cpp
t3dlib1.cpp
t3dlib2.cpp
t3dlib3.cpp

head 中已含:
t3dlib1.h
t3dlib2.h
t3dlib3.h

link input 中已含的library:
WinMM.lib
ddraw.lib
dsound.lib
dinput.lib
dsetup.lib
DXGuid.lib
dinput8.lib

ide: visual stdio 2005

达人。牛人都看看。。。小弟谢了。

error description:
------ Build started: Project: GameMaster, Configuration: Debug Win32 ------
Linking...
t3dlib2.obj : error LNK2005: "char * joyname" (?joyname@@3PADA) already defined in demo9_1.obj
t3dlib2.obj : error LNK2005: "struct _GUID joystickGUID" (?joystickGUID@@3U_GUID@@A) already defined in demo9_1.obj
t3dlib2.obj : error LNK2005: "unsigned char * keyboard_state" (?keyboard_state@@3PAEA) already defined in demo9_1.obj
t3dlib2.obj : error LNK2005: "struct _DIMOUSESTATE

应该是你在包含.H文件时, 有一些函数的定义什么的重复了.
原因可能是你在每一个.Cpp文件里都include了所有的.H文件.

仔细看看CPP文件对.H文件的需要, 不要重复包含有函数定义的.H文件.

如果.H里有函数定义的, 根据不同的.CPP文件包含时, 为函数声明加上extern关键字.