gpt4 book ai didi

c++ - 如何在 VS2015 中将外部库依赖项链接到一个静态库文件中

转载 作者:太空狗 更新时间:2023-10-29 22:59:22 27 4
gpt4 key购买 nike

情况是这样的。

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

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

我是否真的需要将这些其他库添加到使用库 A 的项目中,或者是否有一种方法可以让库 A 的用户连接起来,这样库 A 的用户只需要担心那个库而不用担心它是由什么构成的.

编辑:

Found some related questions but the answers do not quite solve the issue;

linking-static-libraries-to-other-static-libraries

how-to-combine-several-c-c-libraries-into-one

编辑2:

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

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

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

有人可能会争辩说,为什么不像 MathLib 库那样将 BoostMath 包含到项目 User 中,但这没有捕获要点。我想创建一个我自己的库,它可能会或可能不会在内部使用其他库,但这对我的库的最终用户来说应该没有任何关系。

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

编辑 3:我什至在属性文件中发现了与此 answer 中提到的完全相同的命令行.

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

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

Appearantly this functionality is broken since VS2010? According to this answer. Usefull other question. Edit4:

我基本上想这样做,但它在 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/

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