为 FreePascal / Lazarus 包装 Fortran 库

发布于 2025-01-08 17:48:22 字数 435 浏览 1 评论 0原文

我想使用 DIERCKX 库(用 Fortran 编写)的一些例程)在 FreePascal 中使用 Lazarus 编写的程序中。由于我对 Lazarus 完全陌生,我想知道该走哪条路:哪些步骤是必要的,我该怎么做?

编辑 在Linux上开发,但是我创建的库需要在Windows上编译,因为它将在Delphi程序中使用。我的 Linux 机器上安装了 gfortran 和 g95;但如果能够在没有 Cygwin 和 Intel Fortran 的 Windows 上编译它,那就太好了。

I would like to use some routines of the DIERCKX library (which is written in Fortran) in a program written in FreePascal with Lazarus. Since I'm totally new to Lazarus, I'd like to know which way to go: Which steps are necessary, and how do I go about this?

EDIT
Developing on Linux, but the library I create will need to be compiled on Windows, because it will be used in a Delphi program. gfortran and g95 are installed on my Linux box; but it would be good to be able to compile it on Windows without Cygwin and without Intel Fortran.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请你别敷衍 2025-01-15 17:48:22

我认为你把这里的情况过于复杂化了。

拉撒路不等于德尔福。

  • Delphi 无法访问超出基本程序级别的 Free Pascal 构造。 (C 兼容部分)。如果你的想法是用 FPC 抽象 GNU 世界,然后从 Delphi 调用它,那将会失败。
  • Delphi 无法静态链接到 gcc 库。要访问 gcc 原始代码,您必须将其转换为 DLL,并从 Delphi 加载它。
  • FPC可以静态链接到gcc库(cygwin、mingw),但只能调用plain
    无需修改或语言特定类型的过程/函数。
  • FPC 当然也可以在 DLL 中使用 gcc 原始代码。
  • 至于从 FPC 获取 Fortran 代码,如果需要从 C 调用,请准备它,确保它可以工作,然后使用 CDECL 调用约定将相关头文件转换为 Pascal(有关翻译的 C 头文件的许多示例,请参阅 FPC 源代码存储库)

对于其余的事情,如果你解释一下你到底被困在哪里,那就会更清楚了。

I think you are overcomplicating the situation here.

Lazarus is not equal to Delphi.

  • Delphi can't access Free Pascal constructs beyond the base procedural level. (the C compatible part). If your idea is to abstract the GNU world with FPC and then call that from Delphi, that will fail.
  • Delphi can't link statically to gcc libraries. To access gcc originating code, you will have to turn it into a DLL, and load that from Delphi.
  • FPC can link statically to gcc libraries (cygwin, mingw), but can only call plain
    procedures/functions without mangling or language specific types.
  • FPC can of course also use gcc originating code in DLLs.
  • As for approach Fortran code from FPC, prepare it if it needs to be called from C, make sure it works, then convert the relevant headers to Pascal with the CDECL calling convention (see the FPC sourcecode repo for many examples of translated C headers)

For the rest it would be clearer if you explain where exactly you are stuck.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文