.lib 和 .dll 向后兼容性

Posted

技术标签:

【中文标题】.lib 和 .dll 向后兼容性【英文标题】:.lib and .dll Backward Compatibility 【发布时间】:2010-06-21 19:54:10 【问题描述】:

我目前有一个 VS6 非托管 C 库,我以 .lib 或 .dll 的形式提供。我想升级到 VS2010,但我还有 VS6、VS2005 和 VS2008 的用户。

VS2010内置的.lib或.dll能否在VS6、VS2005或VS2008中使用?

谢谢!

【问题讨论】:

还是没有答案,我想知道答案。有人吗? 【参考方案1】:

这取决于用于构建库的运行时。在将解决方案从 VS2005 升级到 VS2008 时,我通常会遇到这个问题。默认运行时库因版本而异。

当您构建 .lib 和 .dll 时,这些文件将与运行时的这些版本进行链接。当您在不同 VS 版本之间调试程序或在非开发人员机器上运行程序时,当使用不同运行时构建的程序集尝试跨边界传递信息时,通常会发现问题。详情请见http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx。

【讨论】:

【参考方案2】:

我知道这是一个旧帖子,但如果其他人遇到它,这可能很有用,从 vc6 升级到 vs2010 是一场噩梦,但还有另一种选择。您可以升级到 VS2010 环境,同时仍然使用 vc6 编译器。你需要的工具是 Daffodil,可以在这里找到http://daffodil.codeplex.com/

这是我们的解决方案,因为 VS2010 环境效率更高。

【讨论】:

以上是关于.lib 和 .dll 向后兼容性的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++ 2012 可再发行版是不是与 2010 版本向后兼容?

Android targetSdk向后兼容

ISE14.7兼容性问题集锦

编写兼容的DLL替换按顺序和名称导出两者

MediaSession 和 MediaSessionManager 是不是具有向后兼容性?

语义版本控制 - 向后兼容性和版本 0.x.y