У меня проблемы с компиляцией программы, но только из-за статической библиотеки Box2D (для Windows). Все остальные библиотеки, на которые я ссылаюсь, работают нормально, и компилятор находит .lib. Сначала я подумал, что это может быть из-за того, что я компилировал на x86 вместо x64, но я уже попробовал оба варианта и получил для x86 несовместимую библиотеку и для x64 сообщение об ошибке:
C:\Users\Aether\AppData\Local\Temp\ccEPbRRr.o:main.cpp:(.text$_ZSt11make_uniqueI7b2WorldJ6b2Vec2EENSt9_MakeUniqIT_E15__single_objectEDpOT0_[_ZSt11make_uniqueI7b2WorldJ6b2Vec2EENSt9_MakeUniqIT_E15__single_objectEDpOT0_]+0x35): undefined reference to `b2World::b2World(b2Vec2 const&)'
C:\Users\Aether\AppData\Local\Temp\ccEPbRRr.o:main.cpp:(.text$_ZNKSt14default_deleteI7b2WorldEclEPS0_[_ZNKSt14default_deleteI7b2WorldEclEPS0_]+0x23): undefined reference to `b2World::~b2World()'
collect2.exe: error: ld returned 1 exit status
Команда, которую я использую для компиляции:
g++ -std=c++14 -m64 -Iusr/inc -Iusr/includes -Iusr/src -o bin/Release/Starless.exe -Lusr/lib main.cpp -lfmodL64_vc -lopengl32 -lglew32s -lglfw3 -lSOIL -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lfreetype -lfmod64_vc -lBox2D
Я также уже пытался переместить -lBox2D до, прежде чем указать файл, и после того, как он практически был в команде на этом этапе, но все же,не работает.
Редактировать:
Работает, НО с msbuild (что означает, что он все еще не решен), что дает мне подсказку об ошибке. Я не упомянул ранее, что я компилирую два проекта, оба с их собственными соответствующими свойствами, но один - это .dll, а другой - .exe, который зависит от .dll. Единственная библиотека, которой они оба должны поделиться, - это Box2D.lib. Я предполагаю, что проблема заключается в том, что они используют статическую библиотеку, и при компиляции она только один раз указывает местоположение библиотеки. Это все, что я знаю сейчас, это работает, вроде как с msbuild, но я все равно предпочел бы использовать компилятор gnu.