了解Microsoft的代码库

时间:2009-09-19 23:53:27

标签: documentation

我想了解各种代码库,我认为这些代码库都是微软的代码库。示例库包括atls.lib,atlsd.lib,libcmtd.lib,libcpmtd.lib。您是否会指出我在线参考或其他方式来了解这些库?

澄清:我希望找到一般的学习Microsoft库的索引。可悲的是,当我在网上搜索类似“libcmtd”的内容时,我只是在论坛上发布了有关代码问题的人的帖子。由于Google在前几页内没有报告任何有希望的内容,因此可能没有任何内容,但值得一提。

2 个答案:

答案 0 :(得分:3)

ATLS.LIB是ATL的静态版本。 (ATLSD.LIB是其中的调试版本。)ATL文档从这里开始:http://msdn.microsoft.com/en-us/library/t9adwcde.aspx

LIBCMTD.LIB和LIBCPMTD.LIB是C和C ++运行时库的调试版本。它们是非常标准的实现,因此任何C和C ++库引用都可以。微软已将它们记录在MSDN上。

通过“调试版本”,我的意思是这些版本的库中有额外的检查,以帮助在运行时发现错误。这些通常适用于您的调试版本。在构建发布版本时,您可能希望使用常规版本从文件名中删除最后的“d”。

答案 1 :(得分:0)

另外,如果您使用MF的Microsoft基础类,则msvcrt.lib和msvcrtd.lib是c运行时库。

还有所有这些库的unicode版本。

请参阅afx.h并查找一组#ifdef选择哪些库 默认情况下,“use”会在输出中放置一个pragma lib注释。

在许多情况下,如果您从不同的来源获得库(共享或不共享),或者从不同版本获得相同的源,则实际上不可能链接。

基本上,MS通过做很多编译时决定将自己画成一个角落,这些决定在编译时确实无法做出,比如决定你的图书馆将链接到什么,或者决定所有程序只说unicode或非unicode。

您无法将为调试编译的模块与未编译用于调试的模块链接。 你为什么想要?因为你从某个地方有一个图书馆可以链接。如果该库对Windows执行任何操作,则会强制您使用所有非调试编译来使用它,如果它是无调试库的话。 (例外情况是,如果库不依赖于c运行时库,ATL或MFC。讽刺C / C ++更好地使用不是用C ++编写的库,并且具有讽刺意味的是Windows对于不使用的库更好用,嗯,一个窗口(mfc或atl)。)

请注意,不再需要购买软件库来帮助在Windows中执行此操作? MS让它变得不可能。您必须制作32个,是32个版本才能涵盖所有MFC / ATL / Cruntime的可能性,即使这样它也行不通,因为 许多MS库只是不会链接或将链接,不会在一起工作 似乎链接好的组合。