2014-03-03 51 views
1

我在C++中创建了一个用于Delphi 7项目的DLL,该DLL将使用OpenMP并将替换项目中已存在的一些方法,以便希望在应用程序中加快速度。如何将Delphi 7中的对象传递给C++ dll?

上述功能之一是这样定义的:

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和使用?

回答

0

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

你不行。只有Delphi代码可以使用Delphi类。即使如此,也只有使用相同运行时实例的代码。这需要运行时软件包。

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

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