三:在Delphi中直接链接C语言的OBJ文件这种方法的好处在于最终EXE不用带任何外部文件也不用对C语言过于熟悉
我们都知道代码在编译成可执行文件(或DLLOCX文件下同)之前都必须得先生成OBJ文件(DELPHI一般是DCU文件但也可以通过编辑编译选项生成OBJ文件)然后把OBJ文件和资源文件(*RES)链接成最终的可执行文件利用这个方法我们可以直接把OBJ文件链接到我们的程序里面
不过需要注意的是编译器不同生成的OBJ文件也不一样Microsoft的编译器生成的OBJ文件是COFF格式而Borland的C++Builder生成的是OMF格式因为我们需要在Delphi中链接所以必须使用CBC或者Borland官方站点带的免费编译工具下面我们通过一个简单的例子来说明具体操作步骤:
这个例子是简单的提供一个函数用来判断一个文件是否为Dat格式的VCD文件头文件声明如下:
以下是引用片段
/*
文件名称:DatFormath
*/
#ifndefDatFormat_H
#defineDatFormat_H
#include
#pragmapack(push)//这个与下面的配对一般用到记录类型的时候需要定义这里实际不用
#ifdef__cplusplus
externC{
#endif
externBOOLCheckIsDatFile(constchar*FileNameBOOL*IsDatFile);
#ifdef__cplusplus
}
#endif
#pragmapack(pop)
#endif//DatFormat_H
具体实现代码DatFormatc如下:
#includeDatFormath
BOOLCheckIsDatFile(constchar*FileNameBOOL*IsDatFile)
/*
函数说明:该函数用于判断一个文件是否为Dat文件(即VCD文件)格式
参数:
IN:
FileName:欲判断的文件名称
INOUT:
IsDatFile:是否为Dat格式文件
OUT:
读文件失败返回FALSE否则返回TRUE
作者:陈经韬http://wwwsoftcomlovejingtao@cncom
*/
{
HANDLEhFile;
DWORDdwBytesRead;
BOOLre;
charMyBuf[];
*IsDatFile=FALSE;
//建立读文件句柄
hFile=CreateFile(FileName
GENERIC_READ
FILE_SHARE_READ
NULL
OPEN_EXISTING
);
if(hFile==INVALID_HANDLE_VALUE)returnFALSE;
//读文件
re=ReadFile(hFile
&MyBuf
&dwBytesRead
NULL);
if(dwBytesRead!=)
{
CloseHandle(hFile);
returnFALSE;
}
//读文件失败的时候
if(re!=TRUE)
{
CloseHandle(hFile);
returnFALSE;
}
CloseHandle(hFile);
*IsDatFile=(MyBuf[]==R&&MyBuf[]==I&&MyBuf[]==F&&MyBuf[]==F);
return(TRUE);
}
[] [] [] []