供应商如何提供C ++库支持多个编译器?

时间:2013-11-14 15:11:41

标签: c++ linker

我在C++ program中使用供应商提供的库。所有供应商供应均为.lib, .dll and the header files.

此库首先在MSVC++ 6中使用,现在在MSVC 2010.

中使用

它们似乎支持mingw,qt等。我在调试或发布模式下使用它没有任何问题。

我最近为项目yaml-cpp添加了另一个依赖项,这是一个不提供二进制文件的开源项目。我能够使用cmake和MSVC 2010作为静态库构建yaml-cpp,并且可以成功地将它链接到我的项目。

为了做到这一点我必须分别链接到.lib的调试发布版本,因为我遇到了奇怪的Microsoft CRT /链接器我正在学习的问题。

我很好奇,我的第一个图书馆的供应商(如果你好奇的话,libXl)如何提供适用于一系列编译器.lib and .dll,而不用担心CRT版

如何编写允许此代码的代码或是否为链接过程? yaml-cpp是一个跨平台库,我是否有可能以类似的方式编译它,以便在我的项目中使用单个.lib?

我不确定需要哪些资源来了解它。人们如何了解这类东西?谢谢!

1 个答案:

答案 0 :(得分:1)

.lib和dll可以与各种编译器一起工作的原因在于确保代码中没有特定于编译器的依赖项。 .lib和.dll不会被重新编译,所以一旦它们被创建,它们应该是独立的,如果这样编码的话,它们的功能可以从任何地方访问,并且能够使用.dll或.lib。

有一些关于dll和lib here的利弊的讨论,你可能会感兴趣。

如果您需要更多信息,请告诉我,我会尽力帮助您。