2

有人可以帮我理解这个过程。

在 c++ 视觉工作室 2010 中

我有一个视觉工作室解决方案(让我们称之为 mysol)

我有一个作为静态库构建的项目(我们称之为 staticprj) staticprj 需要使用外部库(我们称之为 ext.lib)

在 staticprj 的源代码主体中,我使用#include extlib.h 包含外部库头文件并调用它的一些函数(让它们称为 extfunctions()),我还包括头文件位置的路径扩展库。

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

提前致谢。

4

1 回答 1

-1

I'm not quite sure it will work, but try putting the .dll inside your "mysol" debug folder. I had a similar problem couple of weeks ago when I had library compiled as .dll. I just placed that .dll within my debug folder and worked lovely.

于 2012-10-10T00:15:36.567 回答