如何将对象从Delphi 7传递给C ++ DLL?

时间:2014-03-03 17:46:05

标签: c++ delphi dll

我正在用C ++创建一个用于Delphi 7项目的DLL,这个dll将使用OpenMP并将替换项目中已经存在的一些方法,这样可以在应用程序中加快速度。< / p>

其中一个功能定义如下:

function ReplaceFunction(chain:String;functionTE:TEFunction):string;

对象functionTE声明如下,

TEFunction = class(TObject)
  private
    FFunctionName: string;
    procedure SetFunctionName(const Value: string);
    function GetFunctionNameCapital: string;
  public
    Handle:THandle;
    Funcion:Pointer;
    FileName:string;
    ParamNumber:integer;
    Description:string;
    property FunctionNameCapital:string read GetFunctionNameCapital;
    property FunctionName:string read FFunctionName write SetFunctionName;
  end;

如何将此类的对象传递给dll并使用它?

1 个答案:

答案 0 :(得分:0)

  

如何将此类的对象传递给dll并使用它?

你做不到。只有Delphi代码才能使用Delphi类。即便如此,只有使用相同运行时实例的代码。这需要运行时包。

您需要以互操作友好的方式公开功能。无论是普通的C风格函数,还是COM风格的界面都是显而易见的选择。

您不仅不能传递该对象,还必须不要尝试跨互操作边界使用Delphi本地字符串。再次,您需要使用互操作友好类型。对于字符串,这包括C字符串(以空字符结尾的字符数组)和COM BSTR