Как найти источник явно ошибочного LNK2005 (символ уже определен)?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как найти источник явно ошибочного LNK2005 (символ уже определен)?

Сообщение Anonymous »

Я пытаюсь скомпилировать исходный код приложения, из файлов которого удалены библиотеки.
Я уже скачал, скомпилировал и связал каждую библиотеку, которая нужна проекту, но я У меня возникли проблемы с конкретным: crypto (https://www.cryptopp.com/).
Я получаю LNK2005 (уже определенный символ) при попытке компиляции. Точное сообщение об ошибке:

Error 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 много раз в прошлом, но на этот раз я просто не могу понять, что происходит.
Поскольку я не знаю, что может быть причиной этой ошибки, я не знаю чем именно поделиться здесь относительно кода. Ниже приведен код, который, я думаю, может помочь, но если вы чувствуете, что чего-то не хватает, вы можете запросить дополнительный код.
Объявление типа, определяемого дважды
Изображение

Проблемное объявление
Изображение

Если я прокомментирую две строки, выбранные во втором отпечатке (и, очевидно, обрезанные на них ссылки в коде), я могу без проблем скомпилировать проект.
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/492 ... dy-defined
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»