在Delphi编程中使用C语言代码[2]

 我来答
机器1718
2022-10-17 · TA获得超过6837个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:161万
展开全部
 三:在Delphi中直接链接C语言的OBJ文件

  这种方法的好处在于最终EXE不用带任何外部文件 也不用对C语言过于熟悉

  我们都知道 代码在编译成可执行文件(或DLL OCX文件 下同)之前 都必须得先生成OBJ文件(DELPHI一般是DCU文件 但也可以通过编辑编译选项生成OBJ文件) 然后把OBJ文件和资源文件(* RES)链接成最终的可执行文件 利用这个方法 我们可以直接把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   )//这个与下面的配对 一般用到记录类型的时候需要定义 这里实际不用   #ifdef __cplusplus   extern  C  {   #endif   extern BOOL CheckIsDatFile(const char * FileName BOOL *IsDatFile);   #ifdef __cplusplus   }   #endif   #pragma pack(pop)   #endif // DatFormat_H   具体实现代码DatFormat c如下:   #include  DatFormat h   BOOL CheckIsDatFile(const char * FileName BOOL *IsDatFile)   /*   函数说明:该函数用于判断一个文件是否为Dat文件(即VCD文件)格式   参数:   IN:   FileName:欲判断的文件名称   IN OUT:   IsDatFile:是否为Dat格式文件   OUT:   读文件失败返回FALSE 否则返回TRUE      作者:陈经韬  // soft lovejingtao@ cn   */   {   HANDLE hFile;   DWORD dwBytesRead;   BOOL re;   char MyBuf[ ];   *IsDatFile=FALSE;   //建立读文件句柄   hFile = CreateFile(FileName   GENERIC_READ   FILE_SHARE_READ   NULL   OPEN_EXISTING       );   if (hFile == INVALID_HANDLE_VALUE) return FALSE;   //读文件   re = ReadFile(hFile   &MyBuf      &dwBytesRead   NULL);   if (dwBytesRead!= )   {   CloseHandle(hFile);   return FALSE;   }   //读文件失败的时候   if (re!=TRUE)   {   CloseHandle(hFile);   return FALSE;   }   CloseHandle(hFile);   *IsDatFile=(MyBuf[ ]== R  && MyBuf[ ]== I  && MyBuf[ ]== F  && MyBuf[ ]== F );   return(TRUE);   }

lishixinzhi/Article/program/Delphi/201311/24759

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式