JNIを用いたプログラムでのライブラリ読み込みエラーについて

2,274 views
Skip to first unread message

松本悦宜

unread,
Jun 7, 2011, 10:19:22 PM6/7/11
to android-g...@googlegroups.com
皆様はじめまして
兵庫県立大学の松本です。

現在Androidアプリの作成を行って、
少しつまずいた点があるのでお聞きしたく投稿致しました。

現在、C言語で作成したプログラムを、
JNIを用いて実行しようとしているのですが、
下記のようなエラーが表示されます

ERROR/AndroidRuntime(746): Caused by: java.lang.UnsatisfiedLinkError:
Cannot load library: link_image[1962]: 33 could not load needed
library 'libglib-2.0.so.0' for 'libetest.so' (load_library[1104]:
Library 'libglib-2.0.so.0' not found)

これは、libglib-2.0.so.0が足りてないと思い
libs/armeabiにlibglib-2.0.so.0を入れて実行したのですが、
同じエラーが出てしまいました。

エミュレータの端末を見てみると、
/data/data/(Application Name)/lib内に配置されていないことから、
もしかしたら、.soでなく.so.0等の最後に数字が付いていると
読んでくれないのではないかと推測しています。

このようなCのライブラリを読み込む際、
読み込めるライブラリ・読み込めないライブラリ等の制限とかはあるのでしょうか。

ご教授お願い致します。
--

---------------------
兵庫県立大学大学院応用情報科学研究科 M2
松本 悦宜 MATSUMOTO Yoshinori
nsd0...@gmail.com
090-1957-6017
---------------------

鯖缶戯言

unread,
Jun 7, 2011, 10:41:47 PM6/7/11
to android-g...@googlegroups.com
鯖缶こと服部です。

JNIで開発していますけど、libglibでのCannot load libraryは出したことは無いです。(^^;

http://blog.so-net.ne.jp/user_localhost_sec/2011-03-15
このサイトの人の方法で対応できますか?


2011年6月8日11:19 松本悦宜 <nsd0...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

tueda

unread,
Jun 8, 2011, 3:04:44 AM6/8/11
to android-g...@googlegroups.com

> 現在、C言語で作成したプログラムを、
> JNIを用いて実行しようとしているのですが、
> 下記のようなエラーが表示されます
>
> ERROR/AndroidRuntime(746): Caused by: java.lang.UnsatisfiedLinkError:
> Cannot load library: link_image[1962]: 33 could not load needed
> library 'libglib-2.0.so.0' for 'libetest.so' (load_library[1104]:
> Library 'libglib-2.0.so.0' not found)

多分何かの手順がおかしいです。
通常はjni/Android.mkにこれぐらい書いておけば、
あとは全部ndk-buildが自動でやってくれます。
(-Wallと-llogは当然オプション)


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := NativeHelloWorld
LOCAL_SRC_FILES := NativeHelloWorld.cpp
LOCAL_CPPFLAGS := -Wall
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)


NDKのdocs/の下にドキュメントがあります。

ohisamallc

unread,
Jun 8, 2011, 6:17:16 PM6/8/11
to android-g...@googlegroups.com
山形のohisamaです。
山形は、今日も天気よさそうです。
がんばろう東北。

ndk使ってますか?

android1.6とndkはr3しか知りませんが、
android.mkでbuildしたならリンクが
解決されなければ、失敗するはずです。
(soが生成されないはず)

libglib.soならsystem/libにあったような気がします。
解決策としては、libglib-2.0.so.0を取り込めば良いと
思います。

松本悦宜

unread,
Jun 8, 2011, 8:38:27 PM6/8/11
to android-g...@googlegroups.com
皆様

ご回答ありがとうございます。
リンクやサンプルまで書いて頂き大変参考になりました。

使いたい共有ライブラリの方はもともとあるファイルだったので、
NDKでビルドをしていませんでした。。。
ライブラリを大量に使っているソースだったので
横着をしようと思ってたのがいけなかったみたいです。。。(´Д⊂ヽ

NDKでビルドしてみたところ、
ライブラリが読み込めないエラーが出てきたので、
このあたりのエラーを解決していこうと思っています。

また分からないことがあれば、お聞きするかもしれないので、
ご教授いただけたら嬉しく思います。

2011年6月9日7:17 ohisamallc <pen...@mui.biglobe.ne.jp>:

> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--

Reply all
Reply to author
Forward
0 new messages