当我需要在不同版本的MSVC中构建一些用于我的几个项目中的第三方库时,我通常会为其每 MSVC版本和两个调试版本配置。这就是推动力所在,而这正是我们在我们整个人生中为我们所做的一切。如何在我的项目中正确构建用于调试和发布配置的第三方库?
但是,我仍然没有得到,为什么我不能像建立这个库...什么。我需要的只是函数原型和目标代码,对吧?由于我静态链接CRT,我没有外部依赖。但是当我试图将MSVC8下的Release版本与我在MSVC10下调试的项目链接起来时,我有这个烦人的“已定义”链接器错误,我们都非常讨厌这个错误。
但是为什么?我是否可以在lib中“封装”所有这些函数,而不要将它们导出,以便我的项目仅从lib中获取所需的内容?为什么我可以在每个项目中链接libpng和zlib的预编译版本?是的,他们不是使用MSVC构建的,但我仍然使用CRT的相同功能。那么任何人都可以请深入解释一下,或者分享一些关于这个问题的一些开明解释的链接吗?
不错的答案! “...链接器稍后黏合CRT,当库链接时...” - 是否有强制链接器链接到.lib中的CRT函数的方法?我可以将自己的代码链接到,为什么我不能强制CRT链接? – Mikhail 2012-03-15 16:38:00
这不是静态.libs的工作方式。这是一个非常简单的文件格式,只是一个.obj文件的集合。你强制链接器通过创建一个DLL链接CRT。 – 2012-03-15 16:55:09