-fdump ada规范:“;文件";未申报

-fdump ada规范:“;文件";未申报,ada,Ada,交叉发布,comp.lang.ada上没有答案 我试图为GSL(Gnu科学图书馆)odeiv2包(常微分方程)生成Ada绑定。因此,我执行以下两个步骤: 转到空目录“src”并执行 g++-c-fdump ada spec-c/usr/include/gsl/gsl_odeiv2.h 转到空目录“obj”并执行 gcc-c-gnat05../src/*.ads 不幸的是,gsl_odeiv2.h包含stdio.h,这导致了一系列错误,如 stdio_h.ads:117:69: "FILE" no

交叉发布,comp.lang.ada上没有答案

我试图为GSL(Gnu科学图书馆)odeiv2包(常微分方程)生成Ada绑定。因此,我执行以下两个步骤:

  • 转到空目录“src”并执行

    g++-c-fdump ada spec-c/usr/include/gsl/gsl_odeiv2.h

  • 转到空目录“obj”并执行

    gcc-c-gnat05../src/*.ads

  • 不幸的是,gsl_odeiv2.h包含stdio.h,这导致了一系列错误,如

    stdio_h.ads:117:69: "FILE" not declared in "x86_64_linux_gnu_bits_types_FILE_h"
    
    奇怪的是,文件是声明的,我在stdio.h中包含的/usr/include/x86_64-linux-gnu/bits/types/FILE.h中找到了它

    我想我的odeiv2应用程序甚至不需要文件。那么,有人知道如何消除这个错误吗?

    GNAT包括C和C++头的绑定生成器,它用于完成从C或C++头文件生成艾达规范的繁琐工作的95%。 请注意,此功能并非用于生成100%正确的Ada规范,并且在某些情况下需要手动调整,尽管它通常可以在实践中开箱即用

    因此,如果生成的绑定不能像生成的绑定那样工作,您应该需要手动调整它们。

    GNAT包括C和C++头的绑定生成器,它用于完成从C或C++头文件生成艾达规范的繁琐工作的95%。 请注意,此功能并非用于生成100%正确的Ada规范,并且在某些情况下需要手动调整,尽管它通常可以在实践中开箱即用


    因此,如果生成的绑定与生成的绑定不一样,您应该需要手动调整它们。

    其他C文件再次出现问题,但这次我在web上找到了解决方案。从Interfaces.C_Streams:

      subtype FILEs is System.Address;
      -- Corresponds to the C type FILE*
    

    这个问题在其他C文件中再次出现,但这次我在web上找到了解决方案。从Interfaces.C_Streams:

      subtype FILEs is System.Address;
      -- Corresponds to the C type FILE*
    

    -fdump ada spec
    必须以某种方式处理C include文件混乱,它通过为您请求的头文件及其包含的任何内容的传递闭包生成绑定来实现这一点。还有
    -fdump ada spec slim
    (或者
    -fdump ada slim spec
    ,我忘了)只绑定您请求的特定头。我倾向于使用它,并显式地添加我需要的任何进一步的头来修复丢失的绑定。谢谢Brian,看起来很有希望。还没有结束,但正在路上。谢谢。
    -fdump ada spec
    必须以某种方式处理C include文件混乱,它通过为您请求的头文件及其包含的任何内容的传递闭包生成绑定来实现这一点。还有
    -fdump ada spec slim
    (或者
    -fdump ada slim spec
    ,我忘了)只绑定您请求的特定头。我倾向于使用它,并显式地添加我需要的任何进一步的头来修复丢失的绑定。谢谢Brian,看起来很有希望。还没有结束,但正在路上。谢谢。是的,我希望有自己的作品。我没有想到的是,C开发人员对像该文件这样的“不透明”类型有多么雄心勃勃。我也不是那种C专家。不过,遵循布莱恩的暗示(见上文)似乎是最有希望的方式。是的,我期待着一些自己的工作。我没有想到的是,C开发人员对像该文件这样的“不透明”类型有多么雄心勃勃。我也不是那种C专家。不过,遵循布赖恩的暗示(见上文)似乎是最有希望的方式。