2016-10-10 2 views
0

OpenGL library for Chez Scheme(Linuxの場合、現在のみの設定)に基づいた負荷分散オブジェクトは、GLUTライブラリをロードします。 シェ・スキーム - 次のようにプラットフォーム

(define no-op (load-shared-object "libglut.so.3")) 

はここでそのコードへ linkです。

もちろん、ライブラリにはlibglut.so.3をLinuxにロードしますが、macOSではGLUT.framework/GLUTをロードします。ここで

はイプシロンスキームのロードライブラリがプラットフォームに基づいた方法の例です:

(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")))) 

我々は外国のライブラリのために私たちのバインディングに似た何かを行うことができるようにシェスキームプラットフォームをチェックする良い方法は何ですか?

答えて

2

(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")]) 

それはコンパイル時に解決されるので、あなたに少しより効率的な実行時の動作を与える代わりにmeta-condを使用します。

関連する問題