9

解決

(1) (println (. System getProperty "java.library.path"))

これにより、Java がネイティブ拡張を探す場所のリストが得られます。

次に、lwjgl のネイティブ拡張機能を取得して、そこに配置しました。

うまくいかなかったもの (おそらく、間違った使い方をしたため)

(*) setting :native-path
(*) setting :native-dependencies

問題

私のセットアップ:

(lein deps; echo "====="; cat project.clj; echo "====="; cat src/main.clj; echo "====="; lein repl) &> log

「ログ」の内容

    Copying 10 files to /Volumes/ramdisk/fail/lib
=====
(defproject
  mincase "0.0.1"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.lwjgl.lwjgl/lwjgl "2.8.2"] ]
  :repositories {"local" "/Users/x/z/maven_repo"}
  :jvm-opts ["-Xms4g"  "-Xmx4g"]
  :repl-init main
  )

=====
(ns main
 (:import org.lwjgl.opengl.Display)) 
=====
REPL started; server listening on localhost port 31235
UnsatisfiedLinkError no lwjgl in java.library.path  java.lang.ClassLoader.loadLibrary (ClassLoader.java:1860)
clojure.core=> 

注 - 私はすでに "lein deps" を行っていたので、lwjgl ライブラリは maven に取り込まれています。私が理解していないのは次のとおりです。

(*) how do I get access to lwjgl from Clojure?
(*) more importantly, how do I debug which step this whole thing has gone wrong at?

$ライブラリを見つける

lib
lib/clojure-1.4.0.jar
lib/jinput-2.0.5.jar
lib/jinput-platform-2.0.5-natives-linux.jar
lib/jinput-platform-2.0.5-natives-osx.jar
lib/jinput-platform-2.0.5-natives-windows.jar
lib/jutils-1.0.0.jar
lib/lwjgl-2.8.2.jar
lib/lwjgl-platform-2.8.2-natives-linux.jar
lib/lwjgl-platform-2.8.2-natives-osx.jar
lib/lwjgl-platform-2.8.2-natives-windows.jar

そのため、lwjgl が取り込まれたようです。

間違ったステップを見つけるには、どのようなステップを踏む必要がありますか?

ありがとう!

4

4 に答える 4

6

Google が私の同様の質問に対してこの投稿を見つけたので、ここにこのメモをドロップします。

ライニンゲンの人々はこれに対処しました: https://github.com/technomancy/leiningen/issues/898

バージョン 2.1.0 以降を入手した場合は、修正が含まれています。詳細はバグを参照してください。

更新: (2013 年 8 月)

ここで lwjgl の実験に使用する github のプロジェクトがあります: https://github.com/rogerallen/hello_lwjgl

私はこちらのシェーダートーン プロジェクトでも LWJGL を使用しています : https://github.com/overtone/shadertoneシェーダトーン。

誰かがLWJGLの人々に引っ張っているなら、leinがclojarsリリースで期待しているように、ネイティブを適切なサブディレクトリに入れるだけでいいでしょう。

于 2013-02-21T21:05:25.127 に答える
4

に問題があるようLD_LIBRARY_PATHです。正しい.dllまたは.soファイルを含めていますか?

のようなものを追加する必要があるでしょ:native-dependencies [[lwjgl "2.8.2"]]project.clj

または、シェルから正しい値を設定してみてください。

export LD_LIBRARY_PATH=/home/username/lwjgl-2.8.2/native/linux/
于 2012-05-11T22:22:17.163 に答える
1

Display同じjarファイル内の他のクラスが正しくインポートされるのに、なぜインポートを拒否するのかは少し混乱します

(import '[org.lwjgl.opengl Util WindowsAWTGLCanvasPeerInfo])

このjarファイルが壊れているのではないかと思います。おそらく、別のバージョンを試すことができます。

を実行してこれをデバッグしてみました

cd lib
jar xf lwjgl-2.8.2.jar
cd org/lwjgl/opengl/

そして、そこにあるさまざまなクラスをロードしようとしています。

lein swankまた、シェルからクラスを抽出せずにクラスを探索するのに役立つタブ補完も行います。

于 2012-05-11T22:15:24.503 に答える
1

今日これに遭遇し、ネイティブディレクトリを:jvm-optsin に追加することで少し違った方法で解決しましたproject.clj:

(defproject projectname "0.0.1-SNAPSHOT"
  :description "my project"
  :jvm-opts ["-Djava.library.path=native/linux"]
  :dependencies [[org.clojure/clojure "1.4.0"]])

最新の lwjgl リリースから jar ファイルをlibコピーし、nativeディレクトリをプロジェクト ルートにコピーしました。これまでのところうまくいくようです:

user=> (import org.lwjgl.opengl.Display)
org.lwjgl.opengl.Display

しかし、私はまだ始めたばかりです。とにかく、これが他の誰かに役立つことを願っています:)

于 2012-07-18T11:58:27.930 に答える