Delphi共享c++的函数过程使用心得..
似乎这方面的资料很少,研究了一阵子,终于有了一些确定性的结果。工具:(BCB6 + delphi7)
1.BCB 调用 delphi的 pas单元.
最简单的是直接添加,然后编译器会自动生成头文件,调用即可。
2.delphi 调用 bcb .
delphi能够直接调用 BCB编译 c文件生成的OBJ文件.
注意,这里是 C文件....其它编译器自动生成的Unit单元文件编译出来的obj并不能够识别。
想生成delphi可调用的obj,必须是在BCB中使用新建C文件,然后新建头文件的方法。
例子:
h文件中
#ifndef BCBFileH
#define BCBFileH
#pragma pack(push, 1)
#ifdef __cplusplus
extern "C" {
#endif
extern double _stdcall CallBcbFun(double x,double y);
#ifdef __cplusplus
}
#endif
#pragma pack(pop)
#endif
//--------------------------------------------
c文件内容
#include "BCBFile.h"
double _stdcall CallBcbFun(double x,double y)
{
double v=(x>y?x:y);
return v;
}
//---------------------------------------------
delphi 中可以如此调用
implementation
function CallBcbFun(const x:Real; const y:Real):Real;stdcall;external;{$LINK 'TestBCBFile.obj'}
...
procedure TForm1.btn1Click(Sender: TObject);
var
x,y:Extended;
begin
x:= CallBcbFun(1,60);
ShowMessage(FloatToStr(x)); //输出60
end;
//-----------------------------------------------
通过以上方法。很多过程或者说很多成熟的c单元就可以直接使用了...代码手工转换过程一去不复返....^O^.