2014-03-03 49 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