Ошибка компоновщика 2019 C ++, VS2008

Я использую VS 2008. У меня есть файл библиотеки 5 Lib.

A.lib B.lib C.lib D.lib E.lib

A.Lib Включить все файлы заголовков B, C, D, E

Теперь я пытаюсь использовать A. Lib в примере приложения MFC.

Я включил весь файл библиотеки в пример приложения и все настройки, такие как генерация кода, набор символов одинаков для всего проекта. Я сделал приложение MFC для использования статической библиотеки. Я получаю ошибку компоновщика 2019 в Lib A.lib (A.obj) error LNK2019: неразрешенный внешний символ "public: void __thiscall _Tables :: reclaimIfPossible (....

Здесь функция reclaimIfPossible реализована в b.lib


person Chris_vr    schedule 20.01.2012    source источник
comment
Есть ли что-нибудь в a.lib с именем (.obj), которое ссылается на внешний символ с именем public или, может быть, void? (Похоже, вопрос отрублен.)   -  person wallyk    schedule 20.01.2012
comment
@wallyk обновил вопрос.   -  person Chris_vr    schedule 20.01.2012
comment
@Chris_vr: Итак, есть ли где-нибудь определение (а не объявление) для этого символа?   -  person wallyk    schedule 20.01.2012
comment
@wallyk Да, ссылка на a.lib reclaimIfPossible, которая есть в b.lib.   -  person Chris_vr    schedule 20.01.2012
comment
@wallyk, поскольку я добавляю b.lib, который содержит функцию reclaimIfPossible. Разве этого недостаточно   -  person Chris_vr    schedule 20.01.2012


Ответы (1)


Вы должны ссылаться на все библиотеки.

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

person Kent    schedule 20.01.2012
comment
Я добавляю всю библиотеку в приложение MFC - person Chris_vr; 20.01.2012
comment
Приложение MFC Свяжите все библиотеки Lib A, B, C, D, E. В A.lib Project я добавил включить путь ко всем файлам .h, используемым в B, C, D, E. Но в приложении MFC я не включил путь для файла .h, используемого в B, C, D, E. Becuz A.lib уже делает это - person Chris_vr; 20.01.2012