Грешка при свързване 2019 C++,VS2008

Използвам VS 2008. Имам Library 5 Lib файл

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

A.Lib Включете целия заглавен файл на B,C,D,E

Сега се опитвам да използвам A. Lib в Примерно приложение на MFC.

Включих целия файл на lib в Примерно приложение и всички настройки като генериране на код, наборът от знаци е еднакъв за целия проект. Направих MFC приложение да използва статична библиотека. Получавам грешка на Linker 2019 в Lib A.lib(A.obj) грешка 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 App Link всички Lib A,B,C,D,E. В проекта A.lib добавих Include path на всички .h файлове, използвани в B,C,D,E. Но MFC приложението не съм включил пътя за .h файла, използван в B,C,D,E. Becuz A.lib вече прави това - person Chris_vr; 20.01.2012