这就是情况。

我有一个库项目 A,它使用和操作其他第三方库,我们称它们为 T1 和 T2。

然而,当我在我的任何其他项目中使用这个库 A 时,它提示它无法打开第三方库 T1 和 T2,即使它不直接使用它们。当然,它通过库 A 间接使用它们,因为 A 做了适当的工作来链接和包含该库等。

我真的需要将这些其他库添加到使用库 A 的项目中,还是有一种方法可以说连接库,以便库 A 的用户只需要担心那个库而不是它的构成。

编辑:



Edit2:

感谢您到目前为止的答案。让我澄清一下我的情况。

我在 VS2015 中有一个 .lib 项目,我们称之为 MathLib。这个 MathLib 在内部使用一个 boost 库来进行计算,我们称这个库为 BoostMath。属性文件都设置为包含和使用此 BoostMath,这在库项目本身中完美运行。

我现在正在制作另一个使用 MathLib 进行计算的项目用户。它执行适当的包含和所有操作以使用此库。然而,它提示它不知道 BoostMath 库,因此无法使用 MathLib 库。

有人可能会争辩说,为什么不以 MathLib 库所做的相同方式将 BoostMath 包含到项目 User 中,但这并没有捕获重点。我想创建一个我自己的库,它可能会或可能不会在内部使用其他库,但这对我的库的最终用户来说不应该是任何问题。

我可能必须在 VS Librarian 中设置一些东西来实现这一点,将库连接在一起或一些。但我似乎无法弄清楚。有什么想法吗?

Edit3:
我什至在属性文件中找到了与 answer 中提到的完全相同的命令行。

/OUT:"MathLib.lib" "BoostMath.lib" /NOLOGO /LIBPATH:"path\lib"

但是由于某种原因它不起作用。如果我在有和没有 Librian 属性设置的情况下运行它,.lib 二进制文件保持不变。



我基本上想这样做,但它在VS2015中似乎不起作用
+---------------+
| End user exe  |
+---------------+
       |
       | some api call
       |
+---------------+
| My MathLib    |
+---------------+
       |
       |
       +---------------+------------+----
       |               |            |
 +-----+------+  +-----+-----+
 | BoostMath  |  | OtherMath |
 +------------+  +-----------+

最佳答案

我不确定您如何将库链接到项目......但它不应该提示编译器无法打开库 T1 和 T2,除非您已将它们包含在编译器设置中。

通常如果你没有这个库,它会报告找不到函数示例 T1_xxxx(该函数在 T1 中定义)。我建议您检查项目的编译器设置

关于c++ - 如何在 VS2015 中将外部库依赖项链接到一个静态库文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37074915/

10-12 17:19
查看更多