今天在写ogre程序使用OIS时遇到了一个链接错误:
1>MyExampleFrameListener.obj : error LNK2005: "public: class OIS::MouseState const & __thiscall OIS::Mouse::getMouseState(void)const " (?getMouseState@Mouse@OIS@@QBEABVMouseState@2@XZ) 已经在 OIS_d.lib(OIS_d.dll) 中定义
1>D:\WorkStation\Ogre\OgreFrameExample\Debug\OgreFrameExample.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
网上查找资料这是一个链接错误,链接是在所参选的链接库中出现了重定义的情况,顺便补习了一下编译链接的知识,什么EDU集之类的一大堆了。总的来说解决办法是在包含OIS.h之前定义一个宏#define OIS_DYNAMIC_LIB,用于指定ois在链接时使用的DLL库。
还有另外的方式指定宏,但是不是很明白,还要用到什么vs的命令行编译,以后慢慢研究了。
其实我也是没有搞的粉明白,说的也比较混乱,希望对在这之中的您有所帮助。