2

Знаю что много раз эта ошибка всплывала, но я всё равно не пойму как её решить. С С++ у меня тяжело, в основном пишу на c#.

Есть проект библиотеки, к нему подключено:

#include <first.h>
#include <second.h>

Вызываю методы с них и получаю кучу error LNK2019: ссылка на неразрешенный внешний символ

Насколько я понимаю, ошибка заключается в том, что в .h файлах методы есть, а где именно их тело брать не видит. Надо как-то указать .lib файлы.

В .cpp файле добавил

#pragma comment(lib, "firstLibrary.LIB") 
#pragma comment(lib, "secondLibrary.LIB")

В свойствах проекта в "Каталоги включения" и "Дополнительные каталоги библиотек" указал все пути к файлам. В "дополнительные зависимости" указал эти библиотеки. Ошибка сохраняется.

Если целевую платформу сменить на x86, то библиотека без проблем собирается. Надо именно x64, т.к. стороннее ПО, куда я подсовываю библиотеку, не хочет принимать её, грешу именно на битность.

  • 1
    Если вы указали все библиотеки, их пути и зависимости проекта, то их можно не подключать в ручную. Может быть множество разных проблем. Лучше же конечно собрать с библиотеками, которые собраны под архитектуру программы. А уже потом идти дальше и смотреть сигнатуры имён, правильность экспорта и импорта и тд. – Mister_Jesus Jul 19 '18 at 05:31
  • 1
    Кажется, вы тут уже все сами расписали. Проверить битность библиотек можно посредством утилиты dumpbin – user7860670 Jul 19 '18 at 05:36
  • 1
    "Если целевую платформу сменить на x86, то библиотека без проблем собирается" - ну естественно, попробуйте библиотеки для x64. Это же разные виды приложений... – Harry Jul 19 '18 at 05:38
  • @VTT, не знал про dumpbin. И правда, библиотека оказалась x86. – Николай Jul 19 '18 at 06:13

0 Answers0