@Noname45

Проблема с линковкой функций из неймспейса (LNK2001, LNK2019)?

Использую VS2019. Ничего не помогает, даже ответы из похожих вопросов. Пытался совать реализацию функций в хеадер, там проблема с функцией GenerateInt. Уже не знаю, что делать...


1>FileParser.obj : error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_string __cdecl util::ConvertToHex(unsigned char const *,unsigned __int64,bool)" (??$ConvertToHex@E@util@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBE_K_N@Z) в функции "private: class std::basic_string __cdecl FileParser::EncryptStr(class std::basic_string const &,bool &)" (?EncryptStr@FileParser@@AEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV23@AEA_N@Z). 1>KeyEncryptor.obj : error LNK2001: неразрешенный внешний символ "class std::basic_string __cdecl util::ConvertToHex(unsigned char const *,unsigned __int64,bool)" (??$ConvertToHex@E@util@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBE_K_N@Z). 1>StringEncryptor.obj : error LNK2001: неразрешенный внешний символ "class std::basic_string __cdecl util::ConvertToHex(unsigned char const *,unsigned __int64,bool)" (??$ConvertToHex@E@util@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBE_K_N@Z). 1>KeyEncryptor.obj : error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_string __cdecl util::ConvertToHex(char const *,unsigned __int64,bool)" (??$ConvertToHex@D@util@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD_K_N@Z) в функции "public: struct EncryptedKeys __cdecl KeyEncryptor::EncryptKeys(struct EncryptedData &)" (?EncryptKeys@KeyEncryptor@@QEAA?AUEncryptedKeys@@AEAUEncryptedData@@@Z). 1>StringEncryptor.obj : error LNK2001: неразрешенный внешний символ "class std::basic_string __cdecl util::ConvertToHex(char const *,unsigned __int64,bool)" (??$ConvertToHex@D@util@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD_K_N@Z).


65d8ee07ac6ba112551037.png
65d8ee0de125f913020750.png
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
Насколько я понимаю дело вовсе не в неймспейсе. Беда в с линковкой шаблонной функции ConvertToHex.
Вы не можете так просто обявить шаблонную функцию в cpp файле
Вот похожая проблема
Использование шаблона в многофайловом проекте, как реализовано в vector например?
https://stackoverflow.com/questions/115703/storing...

Самое простое решение - вынести не объявление, а определение функции в заголовочный файл
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы