在我的项目中,我有一个名为GetObject的函数,它包含在我的静态库中的一个类中.当我在另一个使用我的库的项目中调用该函数时,我收到此错误:
错误1错误LNK2019:未解析的外部符号"public:class hamur :: HamurObject*__thiscall hamur :: HamurWorld :: GetObjectA(class std :: basic_string,class std :: allocator> const&)"(?GetObjectA @ HamurWorld @ hamur @ @ QAEPAVHamurObject @ 2 @ ABV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@@ Z)在函数"public:virtual void __thiscall MainState :: Draw"中引用( void)"(?Draw @ MainState @@ UAEXXZ)MainState.obj
据我所知,问题是GetObject是"windows.h"中的预处理器定义,它变成了GetObjectA.
我的问题是:
我从来没有在我的任何文件中添加"windows.h"标题.我正在使用SDL,Fmod,OpenGL.我发现它来自SDL_opengl.h
我试过用:
#ifdef GetObject
#undef GetObject
#endif
Run Code Online (Sandbox Code Playgroud)
它成功了.这是一个好的或唯一可行的解决方案吗?我正在尝试实现一个应该在多平台上工作的库,但我没有测试为Windows以外的任何平台编译它,所以我现在非常担心移植.在移植事情变得更糟之前得到一些建议会非常好
我目前的环境是Windows Xp - Visual Studio 2008.
提前致谢