gpt4 book ai didi

c++ - STL可以完全内联吗?

转载 作者:行者123 更新时间:2023-11-30 01:13:54 24 4
gpt4 key购买 nike

我们在 Visual Studio 2013 C++ 项目中使用第三方库。我猜这个库使用的是与我们不同的 STL 库。我们收到一些链接错误。没有编译时错误。据我了解,STL 主要是基于模板的代码,因此不需要链接。看起来 STL 的某些部分确实需要与 STL 库链接。想知道是否有办法强制 STL 完全内联。问候。

最佳答案

这个问题没有单一的答案。通常,众所周知,C++ 在不同版本的编译器(或不同品牌的编译器等)之间不“链接兼容”(或“二进制兼容”)。因此,提供库的人应该准确指定他们希望使用的编译器,库的用户将需要使用那个编译器。 [我什至看到使用完全相同版本但编译器的两个不同“构建”的问题]

要尽可能找到解决方案,您必须查看编译器/链接器试图找到的是什么,然后查看该函数是否完全存在于 STL 的源代码中 - 如果存在,则可能应用“always_inline”的自由散布(在相关功能上)或特定编译器用于该功能的任何内容。但是很可能您缺少的函数最初并没有在头文件中提供。这当然假设您确实拥有库的源代码,以便可以重新编译它 [或者您可以说服提供者使用新设置重新编译]。

而且你可能仍然会遇到依赖于实现的问题(我上面提到的“相同版本,不同构建”的问题是编写 STL 实现的人决定将构造函数参数从“unsigned int”更改为“size_t”在某些时候,[可能会改变或]改变传递给构造函数的数据的大小 ->当你调用函数时表现不一样[但共享库加载器检测到它并拒绝加载可执行文件/共享库组合]

[正如 Lightness Races in Orbit 所说,以上适用于“标准模板库”,即 std::vectorstd::mapstd::random 和许多其他东西,但它不包括编写任何重要的 C++ 程序所需的所有运行时功能]

关于c++ - STL可以完全内联吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946411/

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