gpt4 book ai didi

红色:*** 错误:单词没有值(value)!调用外部库函数时

转载 作者:行者123 更新时间:2023-12-02 11:38:46 30 4
gpt4 key购买 nike

我正在遵循此处红色文档中的示例:http://static.red-lang.org/red-system-specs.html#section-14

这是我的代码:

Red []

#import [
"SDL2.dll" cdecl [
sdl_init: "SDL_Init" [
flags [integer!]
return: [integer!]
]
]
]

rc: sdl_init 0

当我使用 Red 解释器执行此命令时,我在最后一行收到以下错误:

*** Error: word has no value!
*** Error: word has no value!

使用 red -c 编译会给出更有用的错误:

*** Compilation Error: undefined word sdl_init
*** in file: %/C/temp/red/sdl.red
*** near: [sdl_init 0]

显然,在导入库期间定义的 sdl_init 在到达最后一行时已超出范围。

那么你如何解释文档中的示例呢?如果我在导入之前将 sdl_init 初始化为某个任意值,它在 #import block 之后仍保留相同的值。

最佳答案

请记住,您正在阅读 Red/System(类 C 语言)规范,而不是 Red 规范,因此 #import 必须在 Red/System 中完成。一些注意事项:

  1. 如果您想在 Red 中引用 Red/System,有几种方法:

使用导入创建一个单独的 SDL2.reds 脚本,

Red/System []
sdl: context [
#import [
"SDL2.dll" cdecl [
sdl_init: "SDL_Init" [
flags [integer!]
return: [integer!]
]
]
]
]
rc: sdl_init 0

要在 Red 中使用它,请在脚本中使用#include %SDL2.reds,并且您可以创建一个例程

#include %SDL2.reds
initialize: routine ["SDL Initialize" ][
with sdl [sdl_init 0]
]

或者您可以使用指令:#system-global []#system [] - 我不知道这对于使用 #import,但您可以在其中调用 SDL2.reds 函数。

#include %SDL2.reds
#system [with sdl [sdl_init 0]]
  • 已存在 SDL1 绑定(bind) here 。但也存在来自其他绑定(bind)的依赖性。我有一个mirror of all those fossil bindings (几天前更新)。
  • 关于红色:*** 错误:单词没有值(value)!调用外部库函数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27959901/

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