.obj文件.lib文件的相关知识

来源:百度知道 编辑:UC知道 时间:2024/05/08 10:14:28
.obj文件.lib文件的相关知识如何在只有.obj文件的情况下生成exe文件或者是如何将一个已经存在的.obj文件添加到其他程序之中
vc下如何实现obj文件的调用;

OBJ文件是十六进制目标文件格式,是C语言在编译时的中间文件,OBJ文件虽然是二进制文件,但还要把OBJ文件Link为EXE文件才能运行?这里的知识就比较多了,这里不能多讲。但是要明白一点,在DOS下仅仅有了一个二进制文件还不能运行,因为操作系统要把这些二进制文件加以规划,把相应的数据、程序代码放到应该放的内存位置,这样的经过严密规划和组织好了的二进制文件才能运行。而这些只有在生成的EXE文件里面才做完了这些工作。
在Delphi中直接链接C语言的OBJ文件.
这种方法的好处在于最终EXE不用带任何外部文件.也不用对C语言过于熟悉.

我们都知道,代码在编译成可执行文件(或DLL,OCX文件,下同)之前,都必须得先生成OBJ文件(DELPHI一般是DCU文件,但也可以通过编辑编译选项生成OBJ文件),然后把OBJ文件和资源文件(*.RES)链接成最终的可执行文件.利用这个方法,我们可以在Delphi中直接把OBJ文件链接到我们的程序里面.

不过需要注意的是,编译器不同,生成的OBJ文件也不一样.Microsoft的编译器生成的OBJ文件是COFF格式,而Borland的C++Builder生成的是OMF格式.因为我们需要在Delphi中链接,所以必须使用CBC,或者Borland官方站点带的免费编译工具.下面我们通过一个简单的例子来说明具体操作步骤:

这个例子是简单的提供一个函数,用来判断一个文件是否为Dat格式的VCD文件.头文件声明如下:

以下是引用片段:
/*
文件名称:DatFormat.h
*/
#ifndef DatFormat_H
#define DatFormat_H
#include
#pragma pack(push, 1)//这个与下面的配对,一般用到记录类型的时候需要定义,这里实际不用
#ifdef __cplusplus
extern "C" {
#endif
extern BOOL CheckIsDatFile(con