关于dll编程的良好教程的请求
A request for good tutorials on dll programming
过去我一直在尝试为一些应用程序创建插件。这些都是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
这是给初学者的,但它确实帮了我一把。
我可以向您介绍以下参考资料。看看它们对你有没有用。
- C++DLL编程
- 程序集
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 在多个核心中处理一个HTTP请求
- 错误:请求非类类型为"MULTIMEDIA_FILME [500]"的成员|
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 每个服务器请求的内存预算
- std::getline没有在while循环中重新请求用户输入
- 请求最简单的 OpenMP 目标 GPU 示例
- 请求有关C++中嵌入 for 循环的帮助
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 使用 winsock 接收 http 请求
- QNetworkAccessManager 稍后在添加请求时删除
- 为什么我收到来自谷歌的错误请求?
- 从网链套接字请求连接设备的列表
- libcurl :C++处理多个异步请求
- 对于 http 请求,python 比 c++ 快吗?
- 通过引用传递向量是请求 std::分配器
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- 关于dll编程的良好教程的请求