gpt4 book ai didi

c++ - 在 C++ Visual Studio 中链接静态库

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:29 25 4
gpt4 key购买 nike

谁能帮我理解这个过程。

在 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 中的函数)

提前致谢。

最佳答案

我不太确定它是否有效,但请尝试将 .dll 放入您的“mysol”调试文件夹中。几周前,当我将库编译为 .dll 时,我遇到了类似的问题。我只是将该 .dll 放在我的调试文件夹中并且工作得很好。

关于c++ - 在 C++ Visual Studio 中链接静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12810133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com