gpt4 book ai didi

c++ - Boost 库名称缺少版本标记

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:10 25 4
gpt4 key购买 nike

我已经根据文档构建了 boost:

bjam.exe toolset=msvc-9.0 variant=release link=shared stage

这为我提供了文件夹阶段的所有库。我为每个 boost 包获得 3 个文件,例如:
boost_regex-vc90-mt-1_45.dll<br/>
boost_regex-vc90-mt-1_45.lib<br/>
boost_regex-vc90-mt.lib

没有版本标签的lib文件是什么? boost_regex-vc90-mt-1_45.lib 和 boost_regex-vc90-mt.lib 有什么区别?

boost 文档说明如下:
”扩展名:根据操作系统通常的约定确定。在大多数 unix 风格的平台上,扩展名是 .a 和 .so,分别表示静态库(存档)和共享库。在 Windows 上,.dll 表示共享库和 .lib 表示静态或导入库。在 unix 变体上的工具集支持的情况下,将添加完整版本扩展名(例如“.so.1.34”)和指向库文件的符号链接(symbolic link),命名时不带尾随版本号,将也被创造出来。”
http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.html#library-naming

没有版本标签的文件是库文件的符号链接(symbolic link)? Windows 中的符号链接(symbolic link)?我不明白。

最佳答案

我想它是 Windows 上的拷贝。构建脚本尝试像在 unix 上一样进行符号链接(symbolic link),但由于它在 Windows 上不受支持,因此被定义为复制。

在 unix 上,您通常将 libboost_regex.so 作为指向 libboost_regex.so.1.45.0 的符号链接(symbolic link)。编译器查找 libboost_regex.so,读取链接并将完整名称存储在二进制文件中,因此动态链接器会为此加载 libboost_regex.so.1.45.0程序即使在 libboost_regex.so.1.46.0 时,但新程序链接到最新版本。构建脚本似乎试图尽可能地在 Windows 上模拟该行为。

关于c++ - Boost 库名称缺少版本标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5017027/

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