首页 > 其他分享 >8.5启动及库文件

8.5启动及库文件

时间:2023-02-13 16:36:07浏览次数:32  
标签:文件 c0w32 8.5 函数 启动 目标 obj 及库 链接

      链接选项“-Tpe-c-x-aa”是指定生成 Windows 用的 EXE 文件的选项。在这些选项之后,会指定结合的目标文件。而该命令行中就指定了c0w32.obj、Samplel.obj 这两个目标文件,这点相信大家都能看得出来。Samplel.obj是Samplel.c 编译后得到的目标文件。c0w32.obj这个目标文件记述的是同所有程序起始位置相结合的处理内容,称为程序的启动。因而,即使程序不调用其他目标文件的函数,也必须要进行链接,并和启动结合起来。c0w32.obj是由 Borland C++提供的。如果 C:盘中安装有 Borland C++的话,文件夹 C:\Borland\bcc55\lib 中就会有 c0w32.obj 这个文件。

      库文件指的是把多个目标文件集成保存到一个文件中的形式。链接器指定库文件后,就会从中把需要的目标文件抽取出来,并同其他目标文件结合生成 EXE 文件。

      ilink32 -Tpe -c-x-aa c0w32.obj Sample1.obj,Samplel.exe

      在命令提示符上运行上述命令后,链接器就会出现如图 8-7 所示的错误消息(实际上显示的错误消息更多,这里对其进行了省略)。

 

       该错误消息表示的是无法解析 Samplel.obj 参照的外部符号。外部符号是指其他目标文件中的变量或函数。sprintf及MessageBoxA是目标文件中 sprintf()及MessageBox()的名称。代码中记述的函数名同目标文件中的函数名有一些差异,不过大家只需把它理解成这是C编译器的规定即可。错误消息“无法解析的外部符号”表示的是无法找到记述着目的变量及函数的目标文件,因而无法进行链接的意思。

      sprintf()等函数,不是通过源代码形式而是通过库文件形式和编译器一起提供的。这样的函数称为标准函数。之所以使用库文件,是为了简化为链接器的参数指定多个目标文件这一过程。例如,在链接调用了数百个标准函数的程序时,就要在链接器的命令行中指定数百个目标文件,这样就太繁琐了。而利用存储着多个目标文件的库文件的话,则只需在链接器的命令行中指定几个库文件就可以了。

      通过以目标文件的形式或集合多个目标文件的库文件形式来提供函数,就可以不用公开标准函数的源代码内容。由于标准函数的源代码是编译器厂商的贵重财产,因此若被其他公司任意转用的话,可能会造成一些损失。

标签:文件,c0w32,8.5,函数,启动,目标,obj,及库,链接
From: https://www.cnblogs.com/24koi/p/17116809.html

相关文章