【发布时间】:2011-05-02 14:43:31
【问题描述】:
aeon 让我意识到我需要修改我的问题。
我有一个构建得很好的静态 c++ 库链。 对于 3 个库 A、B、C(“->”表示依赖项):如果 A->B 和 A->C 比我构建 A 时一切都构建成功。
我从 C++ 控制台应用程序引用 A,当我构建该应用程序时,我从静态库 B 中得到未解析的符号。 例子: "Error 195 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl ..."
我正在使用 VS2010 并以新方式引用静态库,这意味着我没有将库添加到“其他库”中,而是从他们在 VS2010 上创建的新“引用...”选项中引用它们。在这里解释:http://qualapps.blogspot.com/2010/04/static-library-dependencies-in-visual.html (我尝试使用“附加依赖项”进行引用,但得到了相同的结果)。
知道如何解决这个问题吗?!
【问题讨论】:
-
A->B和A->C是什么意思? -
当你有一个应用程序 X 引用了库 A 和库 A 引用库 B 以及库 C 中的某些内容时,那么你必须在链接应用程序时将库 A、B 和 C 添加到链接器X. 如果要在将 X 链接到 A 时自动链接 lib B 和 lib C,则需要在 lib A 中添加带有#pragma 注释的链接器命令。
-
VS2010 有这种引用库的新方法。如果您选择引用 A 并将“链接库依赖项”设置为“True”,那么它也应该链接到引用的库。