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