是否可以用Red编写Windows DLL?

aka*_*vel 9 red red-system

我想为一些Windows应用程序编写一个插件,它必须是一个DLL.我真的很想尝试红色和红色/系统混合.但是在SO上询问Rebol&Red聊天室时,我对红色和红色/系统,红色/系统目前是否可能有不同的反应.什么是明确的答案?

kea*_*ist 8

对的,这是可能的.您可以在Red-Blog上查看0.3.3的公告

首先,这是一个描述Red/System过程的简短片段:

共享lib生成

自从一年以来,我们一直在努力实现共享库的生成,现在它可以在主分支中使用.添加了新功能以支持库生成,例如在加载和释放库时声明导出的符号和特殊回调函数的方法.以下是Red/System库的简单示例:

Red/System [
    File: %testlib.reds
]

inc: func [n [integer!] return: [integer!]][n + 1] 

#export [inc]
Run Code Online (Sandbox Code Playgroud)

您可以使用新的-dlib命令行选项编译此类共享库:

do/args%rsc.r"-dlib testlib.reds"

输出二进制名称将具有特定于平台的后缀(.dll,.so或.dylib).

其次,我终于能够得到一个简单的Red脚本来编译成.dll.#export您可以看到#system-global指令提供的指令需要位于Red/System上下文中.Red中的任何函数都需要用Red/System包装器包装.您可以使用#call以下操作完成此操作:

Red []    

hello: does [print "hello"]    

#system-global [
        hellosystem: does [
            #call [hello]
        ]    

        #export cdecl [hellosystem]
]
Run Code Online (Sandbox Code Playgroud)