备选方案SICStus Prolog FFI SP_define_c_谓词()

备选方案SICStus Prolog FFI SP_define_c_谓词(),prolog,ffi,sicstus-prolog,Prolog,Ffi,Sicstus Prolog,我粘贴了SICStus序言4.3.3 原样和。。。失败: $/usr/local/sicstus4.3.3/bin/splfr square.pl square.c c:在函数“square_it”中: square.c:7:3:错误:未知类型名称“SP_WORD” SP_单词arg1; ^ square.c:13:3:警告:从不兼容的指针类型传递'sp_GlobalSICStus_square->dispatch_API_SICSTUS_H->pSP_get_integer'的参数2[默认启用

我粘贴了SICStus序言4.3.3 原样和。。。失败:

$/usr/local/sicstus4.3.3/bin/splfr square.pl square.c c:在函数“square_it”中: square.c:7:3:错误:未知类型名称“SP_WORD” SP_单词arg1; ^ square.c:13:3:警告:从不兼容的指针类型传递'sp_GlobalSICStus_square->dispatch_API_SICSTUS_H->pSP_get_integer'的参数2[默认启用] 如果(!SP_get_integer(tmp,&arg1)) ^ square.c:13:3:注意:应为'SP_integer*',但参数的类型为'int*' 来自用户代码的未捕获异常: ! 无法编译square.c 到目前为止,我为
SP\u WORD
搜索了SICStus C include文件,但没有结果

你有什么建议可以让它工作吗?提前谢谢你


(仅供参考:我使用的是x86-64 Linux Mint 17,gcc版本为4.8.4。)

示例应该使用
SP_integer
而不是内部类型
SP_WORD

find sicstus4.3.3-name'*.c';xargs grep-l SP_WORD
@false。我马上就不在我的电脑旁了。那
找到了什么
找到了什么?(我只在include files…
sicstus-4.3.3/library/clpfd/arith.c
以及该目录中的更多文件中进行了搜索。)。 $ /usr/local/sicstus4.3.3/bin/splfr square.pl square.c square.c: In function ‘square_it’: square.c:7:3: error: unknown type name ‘SP_WORD’ SP_WORD arg1; ^ square.c:13:3: warning: passing argument 2 of ‘sp_GlobalSICStus_square->dispatch_API_SICSTUS_H->pSP_get_integer’ from incompatible pointer type [enabled by default] if (!SP_get_integer(tmp,&arg1)) ^ square.c:13:3: note: expected ‘SP_integer *’ but argument is of type ‘int *’ Uncaught exception from user code: ! Could not compile square.c