请注意,我是C++的新手.
当我编译我的程序时,我注意到我为每个类创建了一个.obj.当我查看程序文件中的其他程序时,我意识到这些程序几乎没有任何.obj,所以我猜我做错了.
此外,如果我从发布目录中删除obj文件并尝试再次运行exe并且它仍然像以前一样工作,我知道这些文件不能毫无意义但是......
它们的用途是什么?它应该为每个类文件制作它们吗? - 如果不是我如何解决这个问题?
当我编译时,如何将它们放在一个名为obj的文件夹中的目录中?
hyd*_*yde 31
.obj文件(.oLinux/Unix上的文件)是编译后的源文件,确实每个.cpp文件都有一个,或者更正式的"编译单元".它们是在构建项目的编译阶段产生的.
.obj然后,这些文件通过链接器组合到应用程序(通常.exe是Windows上的文件)或库文件(在Windows上可以是.dll动态库)或.lib静态库(基本上是.obj一个打包到一个文件中的文件集合), 见下文).在类Unix平台上,应用程序通常没有扩展,动态库有.so扩展,静态库有.a扩展.
您没有看到带有程序的.obj文件或静态.lib文件,因为它们在运行时不需要,它们仅由链接器使用.当您运行建设项目的链接阶段,链接器包含了所有需要的.obj文件到.exe和.dll文件(或同等学历),这是在运行时使用.
通过编译代码生成目标文件.他们将您的代码转换为机器代码,以便计算机可以理解并实施您的解决方案.生成目标文件(为每个.cpp文件生成目标文件)后,编译器将使用所有相关的目标文件来构建可执行文件.然后可以独立于目标文件运行可执行文件,并且可以删除目标文件.如果要创建另一个可执行文件,则需要再次使用相关代码的目标文件.
希望能帮助到你!