如何将Delphi Stream传递给ac/c ++ DLL

ssh*_*ssh 4 c++ delphi stream

是否可以将Delphi流(TStream后代)传递给用c/c ++编写的DLL?DLL将用Microsoft c/c ++编写.如果那是不可能的,那么如果我们使用C++ Builder来创建DLL呢?或者,是否有可以在Microsoft C/C++和Delphi之间共享的Stream(FIFO)类?

谢谢!

Ken*_*ite 12

您可以使用IStreamTStreamAdapter执行此操作.这是一个简单的例子(在D2007和XE2中测试):

uses
  ActiveX;

procedure TForm1.DoSomething;
var
  MemStream: TMemoryStream;
  ExchangeStream: IStream;
begin
  MemStream := TMemoryFile.Create;
  try
    MemStream.LoadFromFile('C:\Test\SomeFile.txt');
    MemStream.Position := 0;
    ExchangeStream := TStreamAdapter.Create(MemStream) as IStream;
    // Pass ExchangeStream to C++ DLL here, and do whatever else
  finally
    MemStream.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

为了以防万一,如果您需要采用其他方式(IStream从C/C++ 接收),您可以使用TOleStreamIStreamDelphi获取TStream.