我有一个项目LibA,它是一个静态库,使用第三方库Lib3。项目 LibA 构建和执行得很好。
我有另一个项目 Exe,它是一个可执行文件并使用 LibA。这可以编译,但链接器找不到来自 Lib3 的函数,这些函数仅在 LibA 中使用。
我尝试过的事情:
- 将 Lib3 的位置添加到项目 Exe 中的库目录路径中(与 LibA 中引用 Lib3 的方式相同)
- 将 Lib3 的位置添加到链接器的附加库目录中
- 将 Lib3 *.lib 文件复制到项目 LibA 的输出文件夹(因此包含 LibA *.lib 文件)
无论我尝试什么,我仍然得到LNK2019: Unresolved external symbol
。只有当我在 LibA 中删除实际调用 Lib3 的代码时,我才能正确编译和链接项目 Exe。
如何正确处理静态库的依赖关系?
编辑:一些代码澄清:
LibA 包含 LibA.h 和 LibA.cpp:
LibA.h:
class LibA {
void doSomething();
}
LibA.cpp:
#include "LibA.h"
#include "Lib3.h"
void LibA::doSomething() {
//call stuff in Lib3.h
}
exe.cpp:
#include "LibA.h"
int _tmain(int argc, _TCHAR* argv[])
{
LibA a = new LibA();
a.doSomething();
}