15

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

  • dll 文件,它们的用途是什么,为什么?
  • 为什么在库上使用 dll 文件?
  • 那个 .def 文件是关于什么的,它是微软独有的吗?
  • 清单文件有什么用?
  • ...

基本上,所有可以在 IDE 中看到的可爱选项(对我来说是 Visual Studio 和 XCxcode)——人们如何了解它们是什么以及如何将它们与比编写“hello world”应用程序稍微复杂的代码结合使用? 我想我正在寻找更多关于编程的“架构视图”。到目前为止,我在所有 C++ 书籍中发现的最多的是总有一节, source code > object code > linked w/ other obj code > executable 但仅此而已。

那么,对于像我这样想学习更多 C++ 语法的人来说,有什么好书吗?我了解代码,了解面向对象,了解 STL。下一步我需要一本好书或资源。

谢谢!(对不起,如果这是一个模糊的问题,但它已经到了这个)

4

4 回答 4

10

dll 文件,它们的用途是什么,为什么?

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

为什么在库上使用 dll 文件?

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

那个 .def 文件是关于什么的,它是微软独有的吗?

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

清单文件有什么用?

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

于 2012-09-27T10:49:33.037 回答
4

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

于 2012-09-27T10:46:30.747 回答
3

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

它适用于初学者,但它确实帮助了我。

于 2014-03-25T07:48:29.797 回答
1

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

  1. C++ DLL 编程
  2. 组件
于 2012-09-27T10:37:48.000 回答