未解析的外部符号来自一个项目中的静态库,而不是另一个项目.(C++)
Unresolved external symbol from a static library in one project, not the other. (C++)
我有一个编译良好的静态库(让我们称之为a),它依赖于另一个静态库(叫它B)。
我还有一个项目X,它使用库A。所以在X中,我包括B,然后在它下面包括A,这两个都在stdafx.h中。我使用#pragma注释来完成这项工作。Project X编译良好。
然而,我有一个项目Y,它也使用库A。但是,即使项目Y的stdafx.h与X的stdafx.h相同,Y也不会编译,从而产生"未解决的外部符号"错误。更奇怪的是,错误指的是库B中的函数,而不是库a中引用的函数。
有人知道为什么会发生这种事吗?对不起,如果我不清楚;代码太多了,我不知道从哪里开始把它包括在这里。谢谢
我假设您使用的是基于stdafx.h标头名称的MSVS。当包含静态库时,您不仅必须包含所需的头文件,还必须链接到静态库文件,即.lib文件。我的猜测是,项目X有权访问该.lib文件,而项目Y没有。
也许可以通过属性->公共属性->引用,然后"添加新引用"来指向两个库。
您的项目Y以及项目X、A、B是否在同一解决方案中?将这些项目添加到与Y相同的解决方案中可能会有所帮助。我只是通过一个包含我想要包含的所有静态库的解决方案来完成这项工作。在我的案例中,路径是由MSVS自动(正确)设置的。尽管这可能需要将项目添加到解决方案中。(这将使用我上面提到的方法"属性->公共属性->引用"等)
如果这是一个来自项目外部的.lib文件,则必须将其包含在"属性->配置属性->链接器->输入->其他依赖项"中,并确保其路径位于"属性->配置属性->链接器->常规->其他库目录"中
希望能帮助
相关文章:
- cmake在我的项目中所需的所有静态库都不成功
- C++ C 项目中的静态库链接
- 使用 raylib 静态库进行项目编译
- Visual Studio 中静态库项目之间的未解析外部
- 为 haskell 堆栈项目编写静态 cpp 库
- 在现代 CMake 项目中存档静态依赖项
- 静态链接 Visual Studio dll 到动态链接的 sfml 项目
- 从另一个动态链接库项目调用静态库函数
- CMake 项目链接静态库
- 我可以在将项目编译为静态库(未定义的引用)时在代码中使用 QImage 吗?
- 尝试使用 gradle 构建指向静态库的 c++ 项目链接时找不到头文件
- 如何将 libcurl 构建为静态库并在项目中使用?
- 从现有项目(VS)创建静态库
- 如何将 Clang 静态分析器与 Cortex-M 项目一起使用?
- 包括不排除静态库项目的用户路径的路径
- MSBuidel - 将资源文件添加到项目后静态库编译失败
- 如何在VS项目中静态链接没有dll文件的cpprest?
- 从 WebAPI 项目运行静态类时出现 StackOverflow 异常 - 从控制台应用程序运行时工作正常
- 两个项目静态地链接同一个SQLite库会导致问题
- 当子项目动态调用库时,如何将两个子项目与主项目静态链接