delphi的const/input和默认的没有修饰, C++都是一样的

delphi的var,对应C++那边是指针,  调用方需要管理内存(负责分配内存及销毁)

delphi的output , 对应c++那边也是指针 , 如果是 C++调用Delphi DLL, 而Delphi有个形参是out修饰的话, C++调用方传入的指针可以不需要初始化, 因为初始化已经在dll那边完成了.

比如delphi的dll:

  1.  
    function _PLCReadHoldingRegister(const RegNo: word; out Value: word): boolean; stdcall;
  2.  
    begin
  3.  
    Result := False;
  4.  
    if not checkClient then
  5.  
    exit;
  6.  
    g_lock.Enter;
  7.  
    try
  8.  
    Result := g_client.ReadHoldingRegister(RegNo, Value);
  9.  
    SendDebugFmt('_PLCReadHoldingRegister, regNr:%d,val:%d',[RegNo,Value]);
  10.  
    finally
  11.  
    g_lock.Leave;
  12.  
    end;
  13.  
    end;

C++那边应该这样定义

  1.  
    typedef bool(__stdcall* _msrPLCReadHoldingRegister) (WORD,WORD&);
  2.  
    ...
  3.  
    WORD lvVal = 0;
  4.  
    if (mRoutines->PLCReadHoldingRegister(30, lvVal)) {
  5.  
    printf(lvVal ...);
  6.  
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/rocklee/article/details/72356555
05-28 23:53