如何通过 Prolog 调用 C 文件?

How to call C-File via Prolog?

我想使用以下方法将 C 文件中编写的谓词访问到序言文件中:

:- use_foreign_library(foreign(mylib)).

但是没有用。我只想从 swi-prolog 本身实现示例 here,但出现以下错误:

c:/users/julian/desktop/prologc/mylib.pl:2: c:/users/julian/desktop/prologc/mylib.pl:2: Initialization goal raised exception: '$open_shared_object'/3:

文件结构如下:

我错过了什么?这不应该与复制和粘贴一起使用吗?

"Das angegebene modul wurde nicht gefunden" Translation: "The specified module was not found"

未找到 Prolog 程序 mylib.dll。你创造了吗?

您不能调用 C 文件(甚至是 C 文件中的函数)。 C 不是解释型语言,C 源代码必须经过编译然后打包成 DLL(动态 link 库)。您需要加载的模块是您使用 C 编译器创建的 mylib.dll。

如何操作取决于您选择使用的工具链。在 Visual C++ 中,最简单的方法是从 DLL 模板项目开始——尽管通过使用 .c 扩展名命名源文件来确保 C 而不是 C++ 编译。在 MinGW/GCC 中,步骤类似于:

gcc -c -o mylib.o mylib.c
gcc -o mylib.dll -s -shared mylib.o -Wl,--subsystem,windows