有没有办法从Delphi IDE编译C代码作为Delphi项目的一部分?

Maw*_*awg 4 delphi

有没有办法从Delphi IDE编译C代码?

我想使用一些C代码作为Delphi项目的一部分(并且不希望将它放在DLL中).那么,在Delphi IDE中,我可以编译C代码吗?也许我可以使用关键字来表示代码插入的开头(就像ASM)?或者将C代码放在一个单独的单元中 - 但是如何从我的Delphi代码中调用它?

如果可以,我该怎么做呢?谢谢 ...


[更新]虽然听起来可以用Free Bolrand命令行C++编译器完成,但我最终决定将C代码放入DLL并静态链接.我猜这两种解决方案都可以接受)?)

Ken*_*ite 11

不,不可能将c代码编译为Delphi项目的一部分.

您可以使用C++ Builder编译c代码,并*.obj通过链接它们来使用Delphi应用程序中的object()文件{$L file.obj},然后像调用任何其他Delphi函数一样调用它们,但是您必须自己提供c运行时库函数的实现.(单元中有一些可用crtl.pas(System.Win.crtl.pas在XE2/XE3中);任何不存在的都需要为自己编写Delphi替换.

有关如何执行此操作的示例,您可以查看Zlib.pas(System.ZLib.pas在XE2/3中)如何使用ZLib .

正如您在问题的评论中提到的那样,您可以设置一个预构建事件,以便在项目构建之前运行您的c编译器,这将起作用; 从技术上讲,我不确定这是否算作"作为项目的一部分进行编译",因为它实际上是在运行外部流程.但是,上述信息仍适用于该情况.

  • 从 XE2 开始,您[可以与 COFF 链接](http://stackoverflow.com/a/7274582/11480) 目标文件。 (2认同)