【发布时间】:2020-04-09 13:08:45
【问题描述】:
交叉发布,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"
奇怪的是,FILE 是声明的,我在/usr/include/x86_64-linux-gnu/bits/types/FILE.h中找到它,它包含在stdio.h中。
我想我的 odeiv2 应用程序甚至不需要 FILE。那么有没有人提示如何摆脱这个错误?
【问题讨论】:
-
-fdump-ada-spec必须以某种方式处理 C 包含文件的混乱,它通过为您请求的头文件及其包含的任何内容的传递闭包生成绑定来做到这一点。还有-fdump-ada-spec-slim(或-fdump-ada-slim-spec,我忘了)它只绑定您要求的特定标头。我倾向于使用它,并明确添加我需要修复缺少的绑定的任何其他标题。 -
谢谢布赖恩,看起来很有希望。还没到最后,但在路上。谢谢。
标签: ada