DLL编程好的教程请求

15

最近我一直在尝试为一些应用程序创建插件。这些都是dll文件,并且我已经按照各种应用程序SDK文档中的说明进行了操作,但我从来没有真正理解自己在做什么。

为了解决这个问题,我试图寻找更多与C++编程实际方面有关的资源,包括处理dll等内容,以下是我能想到的一些列表:

  • dll文件,它们的作用是什么?
  • 为什么要使用dll文件而不是libs?
  • .def文件是什么,它只是微软专用的东西吗?
  • 清单文件是什么?
  • ......

基本上,可以在IDE(对我来说是Visual Studio和XCxcode)中看到的所有这些漂亮选项 - 如何学习它们以及如何将它们与稍微复杂些的代码一起使用?我想我正在寻找更多的“架构视图”关于编程。在所有我的C ++书籍中,我所找到的最多的部分就是: 源代码> 对象代码> 与其他对象代码链接> 可执行文件, 但它仅限于此。

那么,有没有适合像我这样想学习更多东西而不仅仅是C ++语法的人所用的好书或资源呢?我知道代码,我知道面向对象,我也知道STL。我需要一本好书或资源来迈出下一步。

谢谢!(如果问题有点模糊,对不起,但事到如今只好问了)


1
噢,好吧,我会推荐(在我看来是事实上的标准)http://www.amazon.com/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612/ref=wl_it_dp_o_pC_nS_nC?ie=UTF8&colid=2E0Z6RTE6OPPQ&coliid=I3O54RFCDN6EQN 作为“超越hello world”的一步。至于你的其他问题,我会用反问来回答:你知道静态链接和动态链接吗? - Najzero
据我所知,动态链接是在运行时链接库(即dll),而静态链接是在编译时链接库(即lib文件)。当然,这可能是错误的,即使它是正确的,我也没有从系统架构的角度对所有这些事情有一个好的理解。如果那甚至是正确的术语的话:D - Anti-Distinctlyminty
4个回答

10

DLL文件,用途和原理是什么?

DLL文件与Microsoft Windows上的.exe文件相同(除了头信息中一个表示它是DLL的位),DLL文件的内存被使用它的任何程序共享,节省了内存。DLL文件可以根据需要从RAM中加载和卸载,节省了内存。此外,DLL文件可以单独更新,无需重新编译.exe文件(如果你没有源代码可用的话)。

为什么要使用DLL文件而不是静态库?

静态库,也称为“静态链接库”,每次更改都需要重新编译.exe文件,而DLL文件则不需要。如果多个进程使用它们,则DLL文件可以节省内存并且可以从集中位置更新所有程序。对于静态库,您需要重新编译并替换每个.exe文件。DLL文件是必须与exe文件一起包含的额外文件,因此在互联网分发方面可能会有问题。

.def文件是什么,它只存在于Microsoft吗?

.def是与编译器相关的文件,告诉编译器应如何布置内存中的dll(API)。它们可以在许多不同的编译器中找到,包括gcc,尽管支持的功能和语法不同。

清单文件用于什么?

清单文件是Windows XP SP3中的新功能,基本上告诉Windows它需要哪些版本的系统库以及二进制文件是否需要管理员权限运行。(请记住,DLL文件只是一个有一位不同的exe文件)。我相信在代码签名中也使用了清单,以验证可执行文件是否合法。


谢谢 - 非常有用的东西。现在,我需要一本讲述这些事情的书,以便我可以将它们放入更大的背景中。 - Anti-Distinctlyminty

4

CodeProject上有一篇关于C++ DLL编程的优秀文章


看起来非常不错,深入浅出。谢谢!如果您知道任何涵盖这些主题的书籍,请告诉我 :) - Anti-Distinctlyminty

3

1

很好,我会去看看 - 非常感谢你。 - Anti-Distinctlyminty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接