关于dll编程的良好教程的请求

A request for good tutorials on dll programming

本文关键字:教程 请求 编程 关于 dll      更新时间:2023-10-16

过去我一直在尝试为一些应用程序创建插件。这些都是dll文件,我遵循了各种应用程序SDK文档中的说明,但我从来没有真正理解过我在做什么。为了解决这个问题,我试图找到任何更能处理C++编程的一些实际方面的资源,包括处理dll,我脑海中浮现的一个列表是:

  • dll文件,它们用于什么以及为什么
  • 为什么在libs上使用dll文件
  • 这个.def文件是怎么回事,是微软独有的东西吗
  • 清单文件的作用是什么

基本上,IDE中可以看到的所有可爱的选项(对我来说是Visual Studio和XCxcode)-如何了解它们是什么,以及如何将它们与比编写"你好世界"应用程序稍微复杂的代码结合使用?我想我正在寻找一个更"架构视图"的编程。到目前为止,在我所有的C++书中,我发现最多的是source code > object code > linked w/ other obj code > executable但就目前而言。

那么,对于像我这样想学习C++语法之外的东西的人来说,有什么好书吗?我知道代码,我知道对象定向,我知道STL。下一步我需要一本好书或资源。

谢谢!(很抱歉,如果这是一个有点模糊的问题,但它已经发展到了这个地步)

dll文件,它们用于什么以及为什么

dll文件与Microsoft Windows上的.exe文件完全相同(除了标头中的1位表示它是dll)。dlls内存由任何使用它的程序共享,从而节省内存。Dlls可以根据需要从RAM加载和卸载,从而节省内存。此外,它们可以单独更新,而无需重新编译.exe(您可能没有可用的源代码)。

为什么使用dll文件而不是libs

libs,也称为静态库,每次进行更改时都需要重新编译exe,而Dlls则不需要。Dlls如果多个进程使用它们,则可以节省内存,并且可以从集中位置为所有程序进行更新。对于libs,您必须单独重新编译和替换每个.exe。dll是必须包含在exe中的额外文件,因此dll可能不利于internet分发

这个.def文件是怎么回事,它是微软独有的东西吗

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

清单文件的用途是什么

清单对于Windows XP SP3来说是新的,基本上它告诉Windows它需要什么版本的系统库,以及二进制文件是否需要管理员权限才能运行。(请记住,dll只是一个有一点不同的exe)。我相信manfest也用于代码签名,验证可执行文件是否合法。

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

我真的很喜欢CodeGuru上的这个:http://www.codeguru.com/cpp/cpp/cpp_mfc/tutorials/article.php/c9855/DLL-Tutorial-For-Beginners.htm

这是给初学者的,但它确实帮了我一把。

我可以向您介绍以下参考资料。看看它们对你有没有用。

  1. C++DLL编程
  2. 程序集