Я пытаюсь скомпилировать src-код приложения, в котором библиотеки удалены из файлов.
Я уже загрузил, скомпилировал и связал каждую библиотеку, которая нужна проекту, но у меня возникли проблемы с конкретной: crypto (https://www.cryptopp.com/).
Я получаю LNK2005 (символ уже определен) при попытке компиляции. Точное сообщение об ошибке:
Ошибка LNK2005 public: __cdecl CryptoPP::Rijndael::Enc::Enc(void) (??0Enc@Rijndael@CryptoPP@@QEAA@XZ), уже определенный в cryptlib_5_65-v141-x64.lib(rijndael.obj) IGC.GameServer D:\MU Online\IGCN_S9E2_Emu\source\GameServer\PacketEncrypt.obj 1
Ошибка LNK1169 обнаружен один или несколько многократно определенных символов IGC.GameServer D:\MU Online\IGCN_S9E2_Emu\source\Output\IGC.GameServer\Release\IGC.GameServer.exe 1
Очевидно, компоновщик жалуется, что тип public: __cdecl CryptoPP::Rijndael::Enc::Enc(void)
определяется дважды (в rijndael.obj — crypto lib — и в PacketEncrypt.obj — проекте, который я пытаюсь скомпилировать).
Я уже много раз исправлял LNK2005 в прошлом, но на этот раз я просто не могу понять, что происходит.
Поскольку я не знаю, что может быть причиной этой ошибки, я не знаю, чем именно поделиться здесь относительно кода. Ниже приведен некоторый код, который, я думаю, может помочь, но если вы чувствуете, что чего-то не хватает, вы можете запросить дополнительный код.
Объявление типа определяется дважды
Если я прокомментирую две строки, выбранные во втором отпечатке (и, очевидно, удалю их ссылки в коде), я смогу без проблем скомпилировать проект.
Заранее спасибо.
Enc
. - person Ripi2   schedule 09.03.2018