gpt4 book ai didi

smalltalk - 新 Squeak (5.0) 中 Squeak FFI 的语法是什么

转载 作者:行者123 更新时间:2023-12-04 20:37:11 28 4
gpt4 key购买 nike

我正在尝试使用 Squeak Foreign Function Interface。
我能找到的所有信息似乎都不适用于新的 Squeak 5.0,因为当我尝试例如:

add: a to: b
" ( int ) add (int a, int b) ; "
< cdecl: int 'add' ( int a, int b ) module: 'mydll'>
^ self externalCallFailed

源自 this page的:
apiInvalRect: aRect
" ( void ) InvalRect (const Rect &star; badRect ) ; "
< cdecl: void 'InvalRect' ( MacRect ) module: 'InterfaceLib'>
^ self externalCallFailed.

然后我得到它期望 > 的错误在 < 之后.

(我在 Windows 上使用 Squeak 5.0,其资源目录中有 SqueakFFIPrims.bundle。)

最佳答案

您首先需要通过 Monticello 在镜像中安装 FFI。

FFI 包位于 http://source.squeak.org/FFI.html

您需要先安装“FFI-Pools”,然后再安装“FFI-Kernel”。然后您可以加载“FFI-Tests”和“FFI-Example”。

在镜像中安装 FFI 后,正确的语法将如下所示:

add: a to: b
" ( int ) add (int a, int b) ; "
<cdecl: long 'add' ( long long ) module: 'mydll'>
^ self externalCallFailed

您没有指定参数名称 - 它们隐含地采用与 smalltalk 方法相同的位置。

您必须将 int 替换为 long - 在受支持的 32 位平台上也是如此。

编辑 要在 Squeak 中加载 FFI 包,您可以在工作区中键入并执行(执行)此操作:
(Installer repository: 'http://source.squeak.org/FFI')
install: 'FFI-Pools';
install: 'FFI-Kernel';
install: 'FFI-Tests';
install: 'FFI-Examples'.

关于smalltalk - 新 Squeak (5.0) 中 Squeak FFI 的语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197626/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com