我和MinGW一起使用Eclipse。
How does .h, .lib & .dll works together
第一个问题:从上面的问题我得到一个程序需要.h
,.lib
和.dll
文件才能正常工作。除非我在大多数程序中都没有看到任何.h
或.lib
个文件。我看到了.dil
&#39}。 .h
和.lib
全部获得"打包"进入.exe
文件? 根据我的理解.h
和.lib
文件用于开发,.dill
文件用于实际工作程序,这是正确的方法吗?
第二个问题:我知道" main"每个节目的功能,但是" main"你启动其他程序的功能只有 2,000 kb ,整个程序就像 10 gb 但是当你点击启动应用程序时你点击的应用程序就开始了它只会像 2,000 kb 那么大?只做一个简单的hello world程序需要大约144 kb
所以他们真的把整个主循环包含在那个小发射器里面吗?
示例:
正如你所看到的那样,整个文件大小是35演出,它用起了6演出的ram," main"申请只是2,000 kb
?
最后一个问题:当我制作一个简单的hello world程序时,还有一个.o
文件,我需要.exe
或者我是能够在没有它的情况下运行它。只是问,因为我在其他应用程序中看不到任何.o
个文件。在大多数情况下,我只想弄清楚运行.exe
需要哪些文件以及哪些文件只用于开发
答案 0 :(得分:0)
* .h文件 - 包含数据结构和函数签名的定义。编译器使用此信息,并且需要在其代码中使用这些结构和函数的开发人员需要此信息。您可以轻松地修改 .h文件并对其进行编译,但之后您的程序可能无法使用针对先前版本的头文件( .h文件)编译的其他代码。 * .lib它是一个已编译的代码。 Lib表示库或静态链接库。您可以在* .exe或* .dll项目中引用* .lib文件,它将成为* .exe或* .dll的一部分。要使用 .lib文件中的函数,您需要定义其在头文件( .h文件)中定义的函数和数据结构。 * .dll - 它是一个已编译的代码。 Dll代表动态链接库。它们用于共享代码和功能。 Dll无法自行执行。它只提供一组功能和数据。例如,DirectX或OpenGL由dll组成。无需重新编译整个应用程序即可轻松更换Dll。如果要添加新版本的* .lib文件,则需要重新编译所有依赖它的二进制文件。 Dll与* .lib捆绑在一起工作。如果您将项目链接到* .dll,则需要具有此dll的* .lib文件。或者您可以手动加载所需的dll和函数。 Dll还可用于存储应用程序数据,如图像,音乐,窗口菜单。 是的,你可以用这种方式思考libs,hs和dll。
关于你的第二个问题 - 主要功能只是一个程序的入口点。 Windows操作系统寻求它并从此功能开始执行。无论此功能后来做什么都取决于该程序的开发人员。 Witcher不仅包含程序代码,还包含纹理,几何数据,动画,音乐等游戏数据。所有这些媒体内容都可以占用10Gb的磁盘空间。 “main”功能将此数据加载到视频或RAM存储器中。
让我们有一个简单的你好世界计划。它如何使用10Gb的磁盘空间?看看什么是资源文件和资源。你可以根据需要放置尽可能多的文件。应用程序将使用这些文件组成生成的exe文件。