В моем проекте есть функция GetObject, которая помещена в один из моих классов в моей статической библиотеке.Когда я вызываю функцию в другом проекте, который использует мою библиотеку, я получаю эту ошибку:
Ошибка 1, ошибка LNK2019: неразрешенный внешний символ "public: class hamur :: HamurObject * __thiscall hamur :: HamurWorld :: GetObjectA(класс std :: basic_string, класс 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
Это сработало.Это хорошее или единственно возможное решение?Я пытаюсь реализовать библиотеку, которая должна работать на мультиплатформах, но я не проверял, чтобы скомпилировать ее для любой платформы, кроме Windows, поэтому сейчас я очень обеспокоен портированием.Было бы очень неплохо получить несколько советов, прежде чем все станет хуже при переносе ...
Моя текущая среда - Windows Xp - Visual Studio 2008.
Заранее спасибо