【发布时间】:2012-09-30 09:08:06
【问题描述】:
谁能帮我理解这个过程。
在 C++ Visual Studio 2010 中
我有一个 Visual Studio 解决方案(我们称之为 mysol)
我有一个作为静态库构建的项目(我们称之为 staticprj) staticprj 需要使用外部的库(我们称之为 ext.lib)
在 staticprj 的源代码主体中,我包含外部库头文件 # 包含 extlib.h 并调用它的一些函数(让它们称为 extfunctions()) 我还包括 ext.lib 的头文件位置的路径。
staticprj 编译正常,没有错误
mysol 还有另一个项目,它是一个动态库 (dynprj),它依赖于 staticprj。
在 dynprj 的源文件中也使用来自外部库的函数。
我在 dynprj 的源代码中包含了#include extlib.h。 我已经包含了头文件的路径 我已将 extlib.h 直接附加到 dynprj 我还在链接器输入中添加了 ext.lib(以及 ext.lib 所在的路径)。
我仍然收到一个 lnk2001 错误,指出未找到 extfunctions()。
如果我根本不使用 ext.lib,整个结构(mysol 解决方案)可以编译。
我的问题是链接过程是如何工作的,我可以做些什么来纠正这个链接错误。
(请注意,在没有 ext.lib 的情况下,我的 staticprj 和 dynprj 链接很好。我的编译工作正常,我的代码工作正常。当我尝试将另一个 ext.lib 链接到 staticprj 和dynprj 和使用 ext.lib 中的函数)
提前致谢。
【问题讨论】:
标签: c++ visual-studio-2010 static-linking dynamic-linking