如何正确处理静态库的依赖关系
How to correctly handle dependencies of static libraries?
我有一个项目LibA,它是一个静态库,使用第三方库Lib3。Project LibA的构建和执行都很好。
我有另一个项目Exe,这是一个可执行文件,使用LibA。这可以编译,但是链接器没有找到Lib3中的函数,这些函数只在LibA中使用。
我尝试过的事情:
- 将Lib3的位置添加到项目Exe中的库目录路径中(与LibA中引用Lib3的方式相同)
- 将Lib3的位置添加到链接器的附加库目录
- 复制Lib3 *。lib文件到LibA项目的输出文件夹中(因此包含LibA *. lib文件)。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();
}
尝试使用Visual Studio的dumpbin
来查看lib3。Lib导出了所需的函数。如果您不这样做,您将需要在lib3.h
中使用__declspec(dllexport)
声明您的函数,以使它们对试图链接到您的库的其他模块可见。
相关文章:
- C++GTKMM gui循环依赖关系
- 如何在头文件中声明类模板(由于循环依赖关系)
- 对在不同二进制文件中创建的对象文件的依赖关系
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- OpenVINO - 推理库插件 libMKLDNNPlugin.so 无法解析依赖关系
- 模拟测试中类的依赖关系
- C++模板方法中的循环依赖关系
- 解析正交模块的依赖关系
- 如何在 Mac OS 上安装 boost-mpi 及其对 clang 的依赖关系?
- Wt::D bo 中的循环依赖关系
- 在包含窗口标头时难以解决循环依赖关系问题
- 当依赖关系和依赖关系都是多态时,在哪个继承级别存储依赖关系指针?
- 解决循环依赖关系 c++ 的想法
- C++循环依赖关系,未声明的标识符
- C++ 中的循环依赖关系问题
- 为什么包含需要进一步的依赖关系?
- 使用 cmake 获取外部依赖关系
- CMake 外部和内部静态库的循环依赖关系
- 在没有Xcode的macOS中开发具有依赖关系的应用程序
- "std::shared_ptr"循环依赖关系是如何导致问题的