【问题标题】:Visual Studio - static library won't linkVisual Studio - 静态库不会链接
【发布时间】:2020-08-03 04:04:00
【问题描述】:

我在 Visual Studio 中创建了一个静态库(指定为 A),其中包含来自另一个库(指定为 B)的一些头文件。因为那是一个静态库,所以我不需要担心来自 A 的 .lib 文件。当我创建一个控制台应用程序(指定为 C)并添加来自 B 的 .lib 和头文件以及头和 .lib 文件时来自 A。当我尝试编译 C 时,它会出现未解决的外部问题,与 A 无关,但与 B 无关。

我又创建了两个测试项目,一个静态库和一个控制台应用程序。静态库仍然使用A,控制台应用程序仍然使用A和新的静态库,即使没有A的头文件,它也可以正常编译。

我已经了解了所有的差异,我看不出任何会阻止 C 编译的东西。唯一的区别是存储项目的文件夹。我已经双重验证了头文件和 .lib 文件的位置,它们都在那里。我将如何解决 LNK2001 错误?

编辑:我意识到我的帖子没有多大意义,但是当我尝试在另一个项目中使用我的库时,它根本不会链接,我看不出原因。

【问题讨论】:

    标签: c++ visual-studio visual-c++ static-libraries static-linking


    【解决方案1】:

    要链接 .lib 文件,您只需:

    1、将头文件的路径添加到Additional Include Directories(property ->c/c++ -> General -> Additional Include Directories)

    2、将.lib文件的路径添加到附加库目录(属性->链接器->通用->附加库目录)

    3、将.lib文件的名称及其扩展名添加到附加依赖项(属性->链接器->输入->附加依赖项)

    如果这个问题不能解决,建议你参考Doc:Linker Tools Error LNK2001

    【讨论】:

    • 我已经仔细阅读了那个确切的文档,并且我已经检查了所有内容。我无法让我的图书馆工作,即使新制作的图书馆可以。
    • @liaquore,我建议您向我们提供minimal reproducible example以重现该问题。
    • 我刚开始一点一点地添加我的代码,有些部分有效,有些则无效。代码真的会影响程序是否可以链接吗?
    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 2011-06-15
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多