Delphi,不能在外部.pas文件中使用函数

Bjø*_*olt 3 delphi file external function

我正在使用外部.pas文件中的函数.我可以使用一些功能,但不能使用其他功能.据我所知,函数声明方式相同,我想发布一些文件,但不知道发布大量代码.

Kro*_*ica 5

文件未正确链接和/或未包含在项目搜索路径中和/或由具有相同函数名称和/或奇数函数的其他文件隐藏在$IFDEF子句中.

检查拼写,使用子句,工作函数位置(Ctrl+在代码中单击函数名称),$IFDEF子句.

  1. 在Delphi环境选项中未正确链接该文件
  2. 该文件可能位于项目搜索路径之外.因此它没有联系.
  3. 在项目(DPR文件)中错误地键入文件路径.例如,您指的是旧文件的旧版本路径.

在每种情况下,如果名称适合,可以从其他文件中获取某些功能.例如,函数gluUnproject可以从OpenGL.pas和dglOpenGL.pas中获取,如果第一个单元没有正确链接,我会遇到与你现在相同的问题 - 一些功能有效,一些功能缺失.在任何情况下,您都应该编译项目,Ctrl+单击工作函数名称并查看它带给您的位置,检查文件版本位置.

  1. 这些函数可以在$ IFDEF子句中.这些是编译器指令,如果不满足某些条件,则此子句中的代码对编译器是不可见的.例如,在Linux上无法访问{$ IFDEF MSWindows} Func {$ ENDIF}.

  • 另外,我建议不要使用搜索路径.直接在项目中或通过包包含您需要的任何文件.搜索路径使您无法控制并了解程序中的单位. (2认同)
  • 4.搜索路径中包含功能较少的旧版本的dcu. (2认同)

Dav*_*nan 5

您可以使用接口部分中声明的函数,即该部分之前的代码implementation部分.

您可能正在尝试调用仅在实现部分中定义的函数,即在implementation关键字之后出现的代码.

这些不同的部分是Delphi如何在单元级别实现公共和私人可见性.

通常,在编写良好的单元中,将有一个原因使功能对于单元是私有的.但是如果你认为覆盖作者的决定是合理的,那么你需要重新声明接口部分中的函数.这将使您的代码可以使用第三方单元.