我正在用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并使用它?
答案 0 :(得分:0)
如何将此类的对象传递给dll并使用它?
你做不到。只有Delphi代码才能使用Delphi类。即便如此,只有使用相同运行时实例的代码。这需要运行时包。
您需要以互操作友好的方式公开功能。无论是普通的C风格函数,还是COM风格的界面都是显而易见的选择。
您不仅不能传递该对象,还必须不要尝试跨互操作边界使用Delphi本地字符串。再次,您需要使用互操作友好类型。对于字符串,这包括C字符串(以空字符结尾的字符数组)和COM BSTR
。