我可以用 C++ 扩展 lisp 吗?

2023-11-30

我可以从用 c 或 c++ 编写的库中调用 lisp 函数吗?我怎样才能扩展 lisp? 当您想要执行一些系统调用或类似的操作时,这非常有用。


从 lisp 调用非 lisp 代码的情况很少见,而且很少有必要。 CLX(CL 的 X11 客户端实现)不链接到 Xlib 实现,而是直接“讲”X11。在任何系统上,您的 CL 实现可能已经具有出色的操作系统挂钩,因此无需这样做。

也就是说,答案取决于 Lisp 的实现:

In ECL实际上,您可以在 C 下托管一个 CL 环境,然后只需调用cl_eval()以及要执行的代码。这可以让您用 C(或 C++)编写应用程序(或应用程序主机)并“调用”lisp 代码。

In CCL,有一个与 C 兼容的调用接口,可以让您执行如下操作:

(with-cstrs ((x "Hello World"))
  (#_puts x))

在大多数其他 CL 实现中(例如 SBCL;是的,这也适用于 ECL 和 CCL),您可以使用 UFFI(或 CFFI),它只是让您调用 C 函数,这就是其他人正在谈论的。如果这就是您想做的全部事情,那么 CFFI 是一个良好、安全的起点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以用 C++ 扩展 lisp 吗? 的相关文章

随机推荐

  • 如何通过缩放视野来始终保持 2 个物体在视野中​​? (或 z&y 轴)

    我正在为 2 名玩家制作一个小型街机射击游戏 并且需要将屏幕聚焦于 2 名玩家 我让相机在 X 轴的玩家中心移动 但我认为当 2 名玩家玩家之间的距离越来越近 镜头也越来越近 This is the perspective pov 移动相机
  • 如何部署 Outlook 宏?

    我做了一个 Outlook 宏 我如何部署它以在其他机器上使用它 我是否遵循在我的机器上执行的相同步骤 工具 gt 宏 gt 创建新项目 还是有其他方法可以像我们处理 vb 或 C 项目一样进行部署 不 您不需要遵循相同的步骤并从头开始重新
  • 获取 data.frame 中各组的平均值和标准差

    我的心率数据以列表的形式存在 其中有四个类别 1AS 1CS 1AI 1CI 每个类别的大小各不相同 我想输出列表中每个类别的平均值和标准差 我有这种格式的数据来计算方差分析和图基 我已经成功完成了 但平均值让我难住了 Group HR 1
  • while循环和线程的无限循环问题[重复]

    这个问题在这里已经有答案了 使用一个基本示例来说明我的问题 我有 2 段几乎相同的代码 这段代码会导致while循环无限运行 private boolean loadAsset new Thread new Runnable Overrid
  • Oracle 序列:此处不允许使用 CURRVAL?

    以下 Oracle SQL 代码生成错误 ORA 02287 此处不允许序列号 INSERT INTO Customer CustomerID Name VALUES Customer Seq nextval AAA SELECT FROM
  • array() 无法识别列名参数

    在 R 中 我使用dplyr更具体地说arrange 不知何故arrange功能未按预期工作 在下面的示例中 我首先存储列的名称 然后将此变量作为参数传递给名为 my function 的自定义函数 target column mean a
  • Facebook SDK 共享始终返回 sharerDidCancel [重复]

    这个问题在这里已经有答案了 我尝试使用 Facebook SDK 分享帖子 但无论是分享还是取消帖子 总是会调用 sharerDidCancel 这是我的代码 void shareFacebook FBSDKShareLinkContent
  • 在多个浏览器中测试/检查网络应用程序的软件/工具?

    我正在创建一个网站 我想使用自动化测试工具自动检查多个浏览器以进行浏览器兼容性测试 你们知道是否有任何软件 工具 我可以只提供一个链接 然后在多个浏览器中加载页面 我用过浏览器截图之前 如果你不介意等一两个小时也没关系 我还建议您查看一些链
  • 内部类出现“范围内没有类型 file1 的封闭实例”错误

    我有一些代码 本质上它导入了另一个类 它有一个我试图访问的内部类 但它提出了这个错误 file2 java 5 error no enclosing instance of type file1 is in scope public sta
  • 使用 Java 访问 Android Manifest 属性

    这是清单示例 是否可以从 Java 访问属性 versionCode 和 versionName 如何
  • 写入有符号整数就像在 C++ 中写入无符号整数一样

    Is reinterpret cast这样做是安全的 这是最好的方法吗 例如 在下面的代码中 我有一个名为ibytestream 这允许读取uint16 ts and int16 t是从它 ibytestream next is a vec
  • 如何使用纯 javascript 将子级附加到具有指定类名的所有节点

    var menuheader document createElement li document getElementsByClassName subMenu appendChild menuheader 上面是代码片段 我收到此错误 f
  • NetBeans 12.6 的 TAB 和缩进问题

    交易是这样的 如果我在一行代码中使用 TAB 键 效果很好 我按下它 它会正常插入空格 如果我转到一个新行 一个没有代码的空行 它就不起作用 无论 像这样 System out pri nt 这是第一个问题 第 2 号 缩进 如果我在任意位
  • 在 jquery datetimepicker 中设置最大和最小日期时间

    我正在使用jquery datetimepicker 我想在其中设置mindate和时间 这是在第二个datetimepicker中选择的值 我尝试的是 date start datetimepicker autoSize true cha
  • 在运行时检查 Python 模块版本

    许多第三方 Python 模块都有一个属性 用于保存模块的版本信息 通常类似于module VERSION or module version 但有些则不然 此类模块的具体示例是 libxslt 和 libxml2 我需要检查运行时是否使用
  • 为什么这个 BASH 数组没有构建?

    为什么这个 bash 数组没有填充 我相信我过去也这样做过 回声 XECOMMAND 显示无数据 DIR 1 TEMPFILE tmp dir tmp ls l DIR tail n 2 sed s s g cut d f5 9 gt TE
  • 为什么这个嵌套的 content_tag 无法正确呈现?

    我的助手中有这个 def favorites count node content tag span class card favorite count do content tag i class icon heart node cach
  • 如何有选择地更新 wpf 中的模型

    当单击 listviewitem 时 我会在列表视图中显示模型列表 我打开一个绑定到 listviewitem 数据模型的对话框 并允许用户编辑各种属性 我正在尝试弄清楚如何处理 确定 和 取消 按钮 一方面 如果我将对话框直接绑定到列表视
  • Xcode单一窗口,显示来自xib文件的自定义视图

    我正在创建一个 OSX 应用程序 它有一个窗口 该窗口包含一个视图 在整个使用过程中呈现不同的视图 我目前的做法 在默认的 MainMenu xib 中 我在默认生成的窗口 这是我将使用的窗口 中为自定义视图创建了一个出口 我们就这样称呼它
  • 我可以用 C++ 扩展 lisp 吗?

    我可以从用 c 或 c 编写的库中调用 lisp 函数吗 我怎样才能扩展 lisp 当您想要执行一些系统调用或类似的操作时 这非常有用 从 lisp 调用非 lisp 代码的情况很少见 而且很少有必要 CLX CL 的 X11 客户端实现