Scheme 基于平台加载共享对象的chez方案
(当前仅针对Linux的设置)加载GLUT库,如下所示:Scheme 基于平台加载共享对象的chez方案,scheme,chez-scheme,Scheme,Chez Scheme,(当前仅针对Linux的设置)加载GLUT库,如下所示: (define no-op (load-shared-object "libglut.so.3")) 下面是对该代码的一个解释 当然,我们希望库在Linux上加载libglut.so.3,但在macOS上加载GLUT.framework/GLUT 以下是Ypsilon Scheme如何基于平台加载库的示例: (define libGLUT (cond (on-darwin (load-shared-object "GLUT
(define no-op (load-shared-object "libglut.so.3"))
下面是对该代码的一个解释
当然,我们希望库在Linux上加载libglut.so.3
,但在macOS上加载GLUT.framework/GLUT
以下是Ypsilon Scheme如何基于平台加载库的示例:
(define libGLUT
(cond
(on-darwin (load-shared-object "GLUT.framework/GLUT"))
(on-windows (load-shared-object "glut32.dll"))
(on-linux (load-shared-object "libglut.so.3"))
(on-freebsd (load-shared-object "libglut.so"))
(on-openbsd (begin
(load-shared-object "libXmu.so.10.0")
(load-shared-object "libGLU.so.7.0")
(load-shared-object "libglut.so.3.7")))
(else
(assertion-violation
#f
"can not locate GLUT library, unknown operating system"))))
检查Chez方案上的平台的好方法是什么,这样我们就可以在国外库的绑定中执行类似的操作?那么(机器类型)
呢
(机器类型)
怎么样
发件人:
相反,使用metacond
将使您的运行时行为更加高效,因为它将在编译时得到解决 来自:
相反,使用metacond
将使您的运行时行为更加高效,因为它将在编译时得到解决
~ % uname -m -p -r -s
Darwin 15.6.0 x86_64 i386
~ % chez
Chez Scheme Version 9.4.1
Copyright 1984-2016 Cisco Systems, Inc.
> (machine-type)
ta6osx
(case (machine-type)
[(i3le ti3le) (load-shared-object "libc.so.6")]
[(i3osx ti3osx a6osx ta6osx) (load-shared-object "libc.dylib")]
[else (load-shared-object "libc.so")])