如何通过 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
我想使用以下方法将 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