我有一个项目LibA,它是一个静态库并使用第三方库Lib3。 Project LibA构建并执行得很好。
我有另一个项目Exe,它是一个可执行文件并使用LibA。这会编译,但链接器找不到Lib3中的函数,这些函数仅在LibA中使用。
我尝试过的事情:
无论我尝试什么,我仍然得到LNK2019: Unresolved external symbol
。只有当我在LibA中删除实际调用Lib3的代码时,我才能正确编译和链接项目。
如何正确处理静态库的依赖?
编辑:一些代码澄清:
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();
}
答案 0 :(得分:0)
尝试使用Visual Studio的dumpbin
来查看lib3.lib是否已导出所需的函数。
如果不这样做,则需要在lib3.h
中使用__declspec(dllexport)
声明您的功能,以使其他尝试链接到您库的模块可见。