[ create a new paste ] login | about

Link: http://codepad.org/uu2vGYUm    [ raw code | fork ]

fgtrjhyu - Plain Text, pasted on Jun 18:
;file usejna.clj
;Class/forNameの理由
;コンパイル後までfoo.Bazは有効ではないため、
;リーダーが読み込む時点ではfoo.Bazというクラスリテラルは無効である
;REPLでもコンパイルしてから実行すること
;(compile 'foo.usejna)
;(foo -3)
(ns foo.usejna
  (:gen-class))

(import '(com.sun.jna Native Library))

(defn foo [x]
  (gen-interface
    :name foo.Baz
    :extends [com.sun.jna.Library]
    :methods [[abs [int] int]])
  (let [msvcrt (Native/loadLibrary "msvcrt" (Class/forName "foo.Baz"))]
    (println (format "%d<abs(%d)" (.abs msvcrt x) x))))

(defn -main [& args]
  (doseq []
    (foo -3)))


Create a new paste based on this one


Comments: