转发类型未解析 - Lazarus FreePascal

Forward type not resolved - Lazarus FreePascal

我正在尝试使用我之前在 C 中成功使用过的 Pascal 外部库。为了使用这个库,我得到了一个 .h 文件、一个 .dll 文件和一个 .lib 文件。

我使用 h2pas 实用程序转换了 .h 文件,但出现以下错误(我怀疑这些错误与链接器相关):

Error: (5009) Forward type not resolved "XPRSbranchobject"

这似乎是有问题的行:

type
    ...
    XPRSbranchobject = ^xo_user_branch_entity_s ; 

如何让 Lazarus 知道 xo_user_branch_entity_s 是外部库的一部分?

你可以简单地写:

type
  xo_user_branch_entity_s = record
    a: integer;     // <-- probably redundant
  end;
  XPRSbranchobject = ^xo_user_branch_entity_s;

你必须确定你永远不会(取消)分配这样的对象(记录,直接或通过指针);如果源试图访问内部成员,编译器会报错。

这意味着 allocation/deallocation 是由 DLL 完成的。

它应该(可能?)有效...