本文共 709 字,大约阅读时间需要 2 分钟。
delphi的const/input和默认的没有修饰, C++都是一样的
delphi的var,对应C++那边是指针, 调用方需要管理内存(负责分配内存及销毁)
delphi的output , 对应c++那边也是指针 , 如果是 C++调用Delphi DLL, 而Delphi有个形参是out修饰的话, C++调用方传入的指针可以不需要初始化, 因为初始化已经在dll那边完成了.
比如delphi的dll:
function _PLCReadHoldingRegister(const RegNo: word; out Value: word): boolean; stdcall;begin Result := False; if not checkClient then exit; g_lock.Enter; try Result := g_client.ReadHoldingRegister(RegNo, Value); SendDebugFmt('_PLCReadHoldingRegister, regNr:%d,val:%d',[RegNo,Value]); finally g_lock.Leave; end;end;C++那边应该这样定义
typedef bool(__stdcall* _msrPLCReadHoldingRegister) (WORD,WORD&);...WORD lvVal = 0; if (mRoutines->PLCReadHoldingRegister(30, lvVal)) { printf(lvVal ...);}
转载地址:http://czkfi.baihongyu.com/