新 Squeak (5.0) 中 Squeak FFI 的语法是什么
What is the syntax for the Squeak FFI in the new Squeak (5.0)
我正在尝试使用 Squeak 外部函数接口。
我能找到的所有信息似乎都不适用于新的 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 ☆ 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'.
我正在尝试使用 Squeak 外部函数接口。 我能找到的所有信息似乎都不适用于新的 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 ☆ 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'.