草庐IT

backwards-compatibility

全部标签

Windows 版本预处理器和为向后兼容而构建?

我有两台机器,一台运行VistaUltimate32,另一台运行XPSP3。两台机器都安装了相同的VS2008版本。我在第一台机器(vista)上构建了boost1.50.0,随后构建了依赖于boost的libtorrent库。我在一些libtorrent构建说明中看到win版本是在预处理器中指定的,所以我做了目前看来有意义的事情:#define_WIN32_WINNT=0x0600//beingthatthecurrentOSisVista构建成功,我能够在那台机器上运行应用程序。但是,当我尝试在另一个(XP)上运行它时,它失败了,并显示如下消息:Procedureentrypoin

c - .dll 只能在 Windows XP 和 Vista 上正常工作,但不能在 7 上正常工作?

我有一个Windows.dll文件(来自第三方-已停止支持它,我没有C源代码来纠正问题)。我在我的项目中使用.dll。.dll文件在WindowsXP/Vista下运行良好(因为它是在这些操作系统版本为当前/最新版本时发布的)-现在的问题是该项目现在仅限于WindowsXP/Vista用户(由于那个.dll)-当它在Windows7下运行时会出现轻微故障(即与WindowsXP/Vista相比产生不同的结果)。我认为问题是Microsoft一定更改了一些影响兼容性的东西(在Windows库或其他东西中?)。所以我想知道-我知道它并不是最好的选择,但作为一个临时/hackish解决方法是

windows - Qt4 支持的最低 Windows 版本是多少?

如果我使用现代版本的Qt4构建一个helloworld应用程序,我的程序可以运行的最低Windows版本是什么?它可以在Windows2000上运行,甚至可以在旧版本(如NT或Win95)上运行吗? 最佳答案 很难说,因为QT是一个开源项目,您还需要将编译器视为可能的变体,但即使是Windows98也有解决方案CompilingQtforWindows98和Windows2000/NT在真正最新的版本上仍然受支持likethe4.75.0也支持它们。我想真正的问题是Windows95,但您真的需要Win95吗?现在有免费的操作系统可

windows - 添加新功能时是否必须更改COM接口(interface)UID

我的应用程序公开了一个COM接口(interface),供第三方插件使用。现在,我需要向该界面添加一个新方法,但不能更改界面的GUID,因为它会破坏所有现有插件。有人告诉我,如果我在接口(interface)的末尾添加新方法,它将毫无问题地工作,因为最终COM接口(interface)是一个函数指针表。这些新方法只会被新编写的插件使用。我读了这篇文章和RaymondChen博客中的第一条评论:http://blogs.msdn.com/b/oldnewthing/archive/2005/11/01/487658.aspx但评论中提到的情况不会发生在我的情况下,因为它是仅限Window

C# XML 序列化向后兼容性

以前,序列化/反序列化方法使用类型Item:publicclassItem{}现在我有一个名为ItemWrapper的新类,它派生自Item并具有一个附加属性:publicclassItemWrapper:Item{publicstringNewProperty{get;set;}}现在我的序列化/反序列化方法使用ItemWrapper类型。现在我打破了向后兼容性。我无法加载在旧版本中保存的任何Item类型的XML文件。当它尝试将Item反序列化为ItemWrapper时,我考虑过在反序列化方法上放置一个try/catch,然后在catch中我将尝试反序列化为项目。或者我可以使用xPa

javascript - EcmaScript-6 向后兼容性

我很想了解/弄清楚ECMAScript-6的新变化是否适用于旧浏览器。我问这个问题的原因是:我记得在ECMAScript-5中引入了'usestrict';,这是为了兼容旧版本。这意味着旧浏览器将继续正常工作,当它们在解析新的JavaScript代码时遇到'usestrict';语句时将忽略它。并且新的JS引擎将以某种特殊方式处理语句'usestrict';,详见此处Strictmode.所以,来到这个问题我非常怀疑并且很想知道兼容ECMAScript-5的浏览器在解析ECMAScript-6代码时会如何表现。我怀疑的原因是ECMAScript-6新特性涉及语法更改/更新。旧的浏览器是

javascript - 就浏览器兼容性而言,在 javascript 中使用 "let"?

在javascript中使用let关键字有哪些选项。看来它真的很有用。我看过traceur,但我想知道是否还有其他选择,所以我不必通过它运行整个项目。是否有可能使用某种类型的polyfill或库。或者我基本上必须等到所有旧浏览器都消失才能在本地使用它...... 最佳答案 让我引用一下我刚刚在YouDon'tKnowJS:Scope&Closures-AppendixB:PolyfillingBlockScope上读到的内容PS:这是根据CreativeCommonsCCBY-NC-ND3.0许可的所以只要提到引用就可以分享前方大引

JavaScript 正则表达式 : Can I get the last matched index or search backwards/RightToLeft?

假设我有一个字符串foobarbazfoobarbazfoobarbazfoobarbaz我想找到bar的最后一次出现,我怎样才能有效地做到这一点?我需要循环添加匹配项吗?在.NET中,我可以在JS中进行从右到左的搜索,我想我不能? 最佳答案 bar(?!.*bar)将找到字符串中的最后一个bar:bar#Matchbar(?!#butonlyifit'snotfollowedby....*#zeroormorecharactersbar#literalbar)#endoflookahead如果您的字符串可能包含换行符,请使用bar

javascript - 新的 ECMAScript 5 函数有哪些现代化脚本?

ECMAScript5有很多不错的新增功能。JohnResighasagoodoverviewhere.这里有个好ECMAScript5compatibilitytable.对于尚不支持这些功能的浏览器,很多这些东西都可以“伪造”。您知道可以执行此操作的任何脚本吗?我对Object.create特别感兴趣。例如,DouglasCrockford'sJSONscript在创建JSON函数之前检查它们是否存在。如果有更多类似JSON的内容,我们可以在需要使用新函数时包含它们。 最佳答案 Crockfordrecommends这种Obje

PHP:为什么将 "Strict standards: Declaration of x should be compatible with y"应用于静态方法?

如果您编写如下代码,PHP警告“严格标准:x的声明应与y兼容”会警告您:classA{functionfoo($x){..}}classBextendsA{functionfoo(){..}}这是明智的,因为像“$a”这样的对象引用,您认为它是A,但在运行时可能会变成B,因此像$a->foo(3)这样的动态调度方法调用可能最终调用B::foo()时使用了错误数量的参数。我的问题是:为什么同样的警告适用于不是动态调度的静态方法?classX{staticfunctionbar($x){..}}classYextendsX{staticfunctionbar(){..}}在这个例子中,函数