火山软件开发平台

标题: LIB 所谓的兼容性(指定版本)和需求。你更倾向那个? [打印本页]

作者: server    时间: 2022-10-23 17:42
标题: LIB 所谓的兼容性(指定版本)和需求。你更倾向那个?
我发此贴的目的就是想证明。
需求>繁琐

正常情况下来说,在无可奈何、无计可施的情况下,费点事,只要能完美实现预计过程。
一切都是值得的。

如果火山支持编译LIB。好处太大,一言难尽。
当下不支持编译LIB,库的三方收费难以实现。不利于生态。不是每个人都会大公无私的奉献,一直默默的封库。
当前的部件太鸡肋了。始终会生成C++源码。有人会说,能看懂C++源码的都不在这了。哎//仁者见仁。

我觉得可以增加一个限制,参考火山安卓 API版本。
比喻说: @视窗.外部库.外部头文件  "mytest.x64.h"
              @视窗.外部库.x64             "mytest.x64.lib"
              @视窗.外部库.系统需求     "10.1.1.1"    或者   "10.*.*.*"   支持通配符。

作者: urenai    时间: 2022-10-23 17:43
我的帖子,我投了 第二项。你们随意。
作者: 小蜗牛    时间: 2022-10-23 17:46
短期看,支持好
长期看,不支持好

如果发展起来了..随着时间的推移,会越来越乱...
作者: urenai    时间: 2022-10-23 18:04
吴涛只需要维护好ide。兼容性、版本什么的那是三方作者的事。只要他想赚钱。
作者: 创世魂    时间: 2022-10-23 18:49
没必要追求静态库编译。。。
作者: hcwanz    时间: 2022-10-23 18:59
创世魂 发表于 2022-10-23 18:49
没必要追求静态库编译。。。

他追求的应该是彻底的闭源
作者: lhy201233    时间: 2022-10-23 19:37
生产c++是为了解决误报,否则又回到易语言的老路
作者: 飞扬工作室    时间: 2022-10-23 21:06
这个特性最新升级包已经支持了,可以指定所需求的 vs 版本.
作者: urenai    时间: 2022-10-23 22:22
飞扬工作室 发表于 2022-10-23 21:06
这个特性最新升级包已经支持了,可以指定所需求的 vs 版本.

要区分程序系统要求,

Lib要求
作者: 福寿    时间: 2022-10-24 04:54
urenai 发表于 2022-10-23 22:22
要区分程序系统要求,

Lib要求

lib是微软自己搞出来的一个格式,兼容性很差,比如2019生成的,到了2022就不一定可以用,就算你自己生成的lib,别人也不一定能用,还不如以源码的形式存在,兼容性强,火山本来就是可以通过不同的编译器来解决误报,指定lib的话就变成指定编译器了
作者: urenai    时间: 2022-10-24 10:18
本帖最后由 urenai 于 2022-10-24 10:28 编辑

如果一个类里支持同时存在多个版本lib,并在编译时主动跟随系统VS版本。那就能完美解决问题了。

哦对。。。。
比喻说: @视窗.外部库.外部头文件  "mytest.x64.h"
              @视窗.外部库.x64.1             "mytest.x64.10.1.1.1.lib"
              @视窗.外部库.系统需求.1     "10.1.1.1"    或者   "10.*.*.*"   支持通配符。

             @视窗.外部库.x64.2             "mytest.x64.11.1.1.1.lib"
              @视窗.外部库.系统需求.2     "11.1.1.1"
作者: 随风    时间: 2022-10-25 13:57
福寿 发表于 2022-10-24 04:54
lib是微软自己搞出来的一个格式,兼容性很差,比如2019生成的,到了2022就不一定可以用,就算你自己生成 ...

目前VS2015向上兼容了.微软官方就写着这个.https://learn.microsoft.com/zh-c ... -2017?view=msvc-170 而且2019编译的Lib静态库2022是可以用的,我这两版本都有用.实测过的.
闭不闭源不说,但自己用C写一些功能,然后火山嵌入调用,就省事的多,编译还不带DLL.我个人是特别不喜欢带DLL的.
作者: urenai    时间: 2022-10-28 21:16
@飞扬工作室

12楼说的应该是真的,在微软的公开文档中,

  1. Visual Studio 2013 及更早版本中的 Microsoft C++ (MSVC) 编译器工具集不保证主版本间的二进制兼容性。 无法链接由这些工具集的不同版本生成的对象文件、静态库、动态库和可执行文件。 ABI、对象格式和运行时库不兼容。

  2. 我们在 Visual Studio 2015 及更高版本中改变了此行为。 由其中任一版本的编译器编译的运行时库和应用具有二进制兼容性。 这反映在 C++ 工具集主版本号中,对于自 Visual Studio 2015 以来的所有版本,该版本号都以 14 开头。 (对于 Visual Studio 2015、2017、2019 和 2022,工具集版本分别为 v140、v141、v142 和 v143)。 假设你具有 Visual Studio 2015 生成的第三方库。 你仍可在 Visual Studio 2017、2019 或 2022 生成的应用程序中使用它们。无需使用匹配工具集重新编译。 最新版本的 Microsoft Visual C++ 可再发行程序包(可再发行程序包)适用于所有版本。
复制代码

作者: urenai    时间: 2022-10-28 21:55
我也检查了 Visual Studio Installer 能装的都是14 开头的版本
作者: 随风    时间: 2022-10-29 11:04
urenai 发表于 2022-10-28 21:55
我也检查了 Visual Studio Installer 能装的都是14 开头的版本

我是实测过的,因为我现在也是用VS2015封静态lib给火山用的,火山编译用的2019,用到现在也并无问题




欢迎光临 火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4