linux — проблема компиляции исходного кода c ++

У меня проблема с компиляцией программы на C ++, и я пытался найти проблему и решить ее, но в настоящее время я не смог найти источник проблемы. Буду признателен, если кто-нибудь мне поможет 🙂

Данная ошибка: (компиляция под Centos 6.3 с gcc 4.4.7)

In file included from /home/server/Sources/MOP/MistCore/src/server/scripts/PrecompiledHeaders/ScriptPCH.h:25,
from /home/server/Sources/MOP/MistCore/src/server/game/Anticheat/AnticheatMgr.h:7,
from /home/server/Sources/MOP/MistCore/src/server/game/Anticheat/AnticheatData.h:4,
from /home/server/Sources/MOP/MistCore/src/server/game/Anticheat/AnticheatData.cpp:1:
/home/server/Sources/MOP/MistCore/src/server/game/Spells/SpellScript.h: In constructor ‘AuraScript::AuraScript()’:
/home/server/Sources/MOP/MistCore/src/server/game/Spells/SpellScript.h:619: error: no matching function for call to ‘std::shared_ptr<Aura>::shared_ptr(NULL)’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/shared_ptr.h:1263: note: candidates are: std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = Aura]
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/shared_ptr.h:1238: note:                 std::shared_ptr<_Tp>::shared_ptr() [with _Tp = Aura]
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/shared_ptr.h:1236: note:                 std::shared_ptr<Aura>::shared_ptr(const std::shared_ptr<Aura>&)
make[2]: *** [src/server/game/CMakeFiles/game.dir/Anticheat/AnticheatData.cpp.o] Error 1
make[1]: *** [src/server/game/CMakeFiles/game.dir/all] Error 2
make: *** [all] Error 2

файлы:

Да, это длинный кусок кода.

1

Решение

В соответствии с этот сайт, std::shared_ptr был введен в C ++ 11.

Для компиляции C ++ 11 с GCC требуется версия 4.7 или более поздняя.

Обратите внимание, что MistCore основан на TrinityCore, который вместо использования специального определения C ++ 11 с именем AuraPtr использует простой Aura* указатель. Возврат в исходное состояние должен работать так же, как и в первоначальном проекте.

Вы можете просто редактировать /src/server/game/SharedPtrs/SharedPtrs.h и отменить необходимость std::shared_ptr заменяя определения простыми указателями. Хотя нет гарантии, что это решит все проблемы. Exemple.

1

Другие решения

Вы можете указать флаг, используя -std = c ++ 11

1

По вопросам рекламы [email protected]