您如何构建一个库(静态库或 dll/so),以便它对系统的 C 运行时库的未来更新不敏感?
7 月底,微软更新了一堆库,包括 C 运行时库。我们的应用程序由 MFC/C++/VB 和一些第三方库(包括一些封闭源代码)混合编写而成。
我一直在忙于重新编译我们拥有源代码的所有库,但我想知道这是否真的有必要?如果我们链接或加载针对早期版本的 C 运行时构建的库会发生什么?
重新编译这些东西时,主应用程序和支持库之间的哪些编译器和链接器设置必须相同?我发现运行时库设置需要相同(我们使用多线程版本 /MD 和 /MDd),但我担心其他设置。实际上,我已经将所有设置都提取到了 Visual Studio 属性表中,并且我对我们所有不同的项目都使用了相同的表,但这不适用于 3rd 方库,我认为这太过分了。
我注意到链接器会发出有关冲突库的警告,但它建议忽略默认库。这样做安全吗?这似乎是一个非常丑陋的问题解决方案。