gpt4 book ai didi

C++将静态库链接到动态库

转载 作者:行者123 更新时间:2023-11-28 06:28:34 25 4
gpt4 key购买 nike

有点烦人。

我有一个完全动态链接的项目,但我想使用一个似乎只设计为静态链接的库,使用/MT 标志,是否可以构建一个单独的 dll 来链接到静态libs 然后链接到我项目中的那个?

我很抱歉仓促解释,我很累。

有问题的库是子弹物理库。

编辑:好吧,通过更多的谷歌搜索,似乎可以有一个/MD/MDd 编译版本, 虽然我不确定它的位置。

编辑(对于任何感兴趣的人):根据此页面:http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=3846

“如果您的整个引擎都是使用/MD 标志编译的,那么您将使用 bullet 的‘release DLL’版本。您不应该将使用/MD 编译的库与使用/MT 编译的库混合使用。这是主要区别。那里项目符号没有“单独的 DLL (.dll)”文件。

编辑:如果我使用 MSVC 运行时库构建它,那么它会失败。

简而言之,我不知道该怎么做。

他就是我在做的:

使用 Visual Studio 12、2013 编译器在 cmake 中构建整个库。然后构建cmake构建的项目,构建所有需要的项目。

这是随附的说明。 Here

最后编辑:非常感谢大家的帮助!我最终成功构建了它

抱歉有任何拼写错误,当时我很累:3

最佳答案

简短的回答,是的。

虽然您可以将动态库链接到它,但在某些情况下这可能会导致严重问题,具体取决于库的编写方式(状态信息等)。

虽然工作量更大,但包装器 DLL 可能是最安全的做法。然而,这被以下事实所抵消:您只需要包装从应用程序的各个组件实际调用的函数,而不是库提供的整个 API。此外,您需要对实际包装的函数进行某种轻微的重命名,以防止歧义。

编辑时:只是看了一下子弹物理库,因为我个人并不熟悉它,并且在我最初回答后对你的选择感到好奇。如果他们明确表示不支持库的动态构建,我认为包装您实际使用的任何函数绝对是最安全的。太糟糕了。我希望它的横截面不会太大。

关于C++将静态库链接到动态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087408/

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