- 主题:vc-ltl 这个项目好不好用?
这个项目能够让 vc 编译出来的项目去掉对 msvcrt 的依赖。并且能够在 winxp 等老旧的系统上面运行起来。大家有用过这个项目吗?是不是能够投入生产?
https://github.com/Chuyu-Team/VC-LTL5/blob/master/Readme.osc.md
--
FROM 59.60.25.*
这个项目稳定性怎么样?可以用于生产吗?
管他什么巨硬的版权呢。
【 在 z16166 的大作中提到: 】
: 不是去掉对msvcrt.dll的依赖,是把对msvcp*.dll、msvcr*.dll的依赖转到msvcrt.dll上
: 是魔改MS的CRT源代码实现的,应该是违反MS的版权的。dism++的作者这个小伙儿搞的。
: 要运行在XP上,可以用老版本VS的XP toolset编译。
: ...................
--
FROM 59.60.25.*
不止减少尺寸吧。去掉了对 win7/win10 一些 API 的依赖也是好事啊。现在很多软件因为依赖了新的 API 已经没法运行在 win7 了,比如 firefox.
尺寸不是很重要,才节约几百 K 没有意义。
【 在 z16166 的大作中提到: 】
: dism++自己在用,这小伙也把这个库用在他所在的公司产品里了
: 我现在不用考虑节省两三百K的尺寸,所以不用,以前搞的有产品特别在意尺寸,看过这个东西。
--
修改:hgoldfish FROM 183.253.146.*
FROM 183.253.146.*
不一样的。
你的程序里面使用了 win10 专用的 API 时,用 xp toolset 也编译不出 winxp 可以运行的程序。
【 在 z16166 的大作中提到: 】
: xp toolset。。。
--
FROM 183.253.146.*
那我记错了。这是另外一个项目的功能吧:
https://github.com/Chuyu-Team/YY-Thunks
【 在 z16166 的大作中提到: 】
: 如果是这样,vc-ltl或者其他任何人也不行啊
--
FROM 183.253.146.*
不能重新实现这些 API 吗?巨硬新引入的这些 API 需要内核的支持吗?不然为什么在应用层很难模拟新版本的功能呢?
比如我经常看到 InitOnceInitialize() 这个 win7 引入的新 API,从文档上,在 winxp 里面使用 c++ 的全局变量来模拟并不是问题啊。很多软件只是因为使用了这个 API 导致不能在 winxp 里面运行,实在很可惜。
【 在 z16166 的大作中提到: 】
: 没啥用,因为很多模拟不了(帮MS在老的windows上重新实现一遍新Windows引入的API),
: 所以只是load时不弹错误窗,运行时一样失败,而且更加隐蔽,不容易发现问题。
: 类似ELF/macOS的weak symbol,但ELF这个在运行时找不到的话会直接崩掉,而不是返回一个错误值,因为有些人用API都不检查返回值的,非常不利于查问题。所以它这个对于不能模拟的API,最好不要返回E_NOTIMPL、ERROR_NOT_SUPPORTED,直接崩掉最好,不扩散错误,直接fail fast。
: ...................
--
FROM 183.253.146.*
看了一下那个列表。打 * 号表示那些函数没有好的模拟实现。
改变语义确实是个问题,可能真的是实现困难。不过只要最关键的 kernel32.dll 函数实现还可以,应该就差不多可用。
【 在 z16166 的大作中提到: 】
: 没啥用,因为很多模拟不了(帮MS在老的windows上重新实现一遍新Windows引入的API),
: 所以只是load时不弹错误窗,运行时一样失败,而且更加隐蔽,不容易发现问题。
: 类似ELF/macOS的weak symbol,但ELF这个在运行时找不到的话会直接崩掉,而不是返回一个错误值,因为有些人用API都不检查返回值的,非常不利于查问题。所以它这个对于不能模拟的API,最好不要返回E_NOTIMPL、ERROR_NOT_SUPPORTED,直接崩掉最好,不扩散错误,直接fail fast。
: ...................
--
FROM 183.253.146.*
有些项目是很难改的。比如 chromium 这种项目,就有各种 windows 版本的兼容性问题,不支持 win7,不支持 32 位 win10 之类的。还有 Qt6 也已经不能运行在 win7 里面了,改这种大项目太繁了,人生苦短不能这样子浪费。听说 360 的浏览器能够运行在 winxp 里面,不知道有没有这个项目的功劳。
https://github.com/Chuyu-Team/YY-Thunks/commit/0cf70be889b7c80a692cc4dbf6247a1a5a7fe722
ps: Qt 6 的中国团队专门折腾个方案是让客户编译出来的 Qt 6 程序能够运行在 win7 里面,收费的唉,上次宣讲里面说这个事情不难。。
【 在 z16166 的大作中提到: 】
: 什么情况下,会没有源代码,但又能链接它提供的这个obj呢?
: 绝大多数情况下应该都是有源代码的,用xp toolset重新编译一下好了
: 如果源代码确实使用了winxp没有的符号,改源代码更靠谱,明确知道自己的代码哪里不兼容xp,就是有限的几个api,而且改的时候自己清楚修改是否等价。
: ...................
--
修改:hgoldfish FROM 183.253.146.*
FROM 183.253.146.*