2013-11-14 110 views
4

我使用供应商提供的库C++ program。所有供应商的供应是.lib, .dll and the header files.供应商如何提供C++库支持多个编译器?

该库最早是在MSVC++ 6使用,现在MSVC 2010.

看样子他们支持的MinGW,QT等我曾与在调试或发布模式下使用它没有问题。

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

为了做到这一点我必须链接到调试发布版本.lib分别为我已经运行到怪异微软CRT /连接器的问题,我只是学习的。

我很好奇,请问我的第一个库(libXl如果你是好奇)的供应商提供.lib and .dll上一系列的编译器的工作,而不必担心CRT版本

你如何编写允许这样做的代码还是链接过程? yaml-cpp是一个跨平台库,我能否以类似的方式编译它,使我可以在我的项目中使用一个.lib文件?

我不确定寻找哪些资源来了解更多信息。人们如何学习这种东西?谢谢!

+0

据我所知,创建一个新的lib项目,所有的设置应该没问题。有几个开关可以像/ MT一样更改,但除此之外都是标准的。如果你使用yaml和他们提供的项目,那么他们可能会有一些遗留的编译器开关,你应该尝试为该lib创建一个新项目。 – Raxvan

+1

如果该库适用于MSVC++ 6和MSVC 2010,那么很可能不是C++库,而是一个C库。 C++运行时库对于每个MS版本都非常具体,并且据我所知不能混杂在一起。 –

回答

1

.lib和dll可以与各种编译器一起工作的原因是确保代码中没有编译器特定的依赖关系。 .lib和.dll不会重新编译,因此一旦编译完成,它们应该是独立的,并且可以在任何地方使用.dll或.lib来访问它们的功能。

关于dll和lib here的优缺点有一些讨论,您可能会感兴趣。

让我知道你是否需要更多的信息,我会尽我所能。