重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になっております
何度も質問して申し訳ないですが、わかる方いらっしゃれば
ご回答よろしくお願いいたします。

現在JavaでJNIを使用し、呼び出したC++からハードウェアへ
接続するというプログラムを開発しております。

その際、C++をdll形式にして、そのdllをJavaで呼び出すような形なのですが
私が使用しているコンピュータ(Windows 7)では、ハードウェアへの接続ができています。
コマンドを送信し、レスポンスを取得し、Javaのプログラムで表示ができます。
しかし、別のコンピュータ(Windows XP)で、開発したプログラムを実行すると
dllを読み込む時点で下記のエラーが出てしまいます。

java.lang.UnsatisfiedLinkError: no JNI001 in java.library.path
JNI001がC++で作成したdllです。

JNI001.dllは、実行したプログラムと同じフォルダにありますので、おかしいなと思いまして
C:\Windows へ入れてみても結果は変わりません。
私が使っていたコンピュータのeclipseをまるまるコピーして実行しても効果なし。
環境変数も私のコンピュータとほとんど変わりません。
XPのJavaをインストールし直しても変わりません。
フォルダ階層やフォルダ名などチェックしましたが、7とXPで変わった点もないように思います。

そこで、少し気になったのですが、
現在開発中のプログラムは
Java → JNI001.dll → ○○.dll → ハードウェア
○○.dllはハードウェアを動かすためのdllです。

上記の仕様に問題があるのでしょうか。
それでは私のコンピュータで接続できている理由がわからなくなりますが
・・・もう、なにもわかりません

どうか、ご教授宜しくお願い致します。

A 回答 (1件)

>java.lang.UnsatisfiedLinkError: no JNI001 in java.library.path



エラーメッセージを読む限り、「java.library.path に JNI001 がない」と書いてあるよう見えますけど。
他に考えられる事といえば、JNI001.dllや○○.dllに必要なランタイムライブラリがXP側にはインストールされていないとかではないでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます
C++初心者のためランタイムライブラリ等わからないことばかりですので
ランタイムライブラリについて詳しく調べてみます
ありがとうございます

お礼日時:2012/07/08 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!