Android プロジェクトでオープン ソースの C ライブラリを使用しようとしています。このライブラリはatof()
関数を使用します。atof()
標準 C ライブラリ (stdlib.h) で定義されている関数であることはわかっています。そのため、Android NDK の標準 C ライブラリ (bionic ライブラリ) に実装する必要があります。
しかし、この関数の呼び出しを含むライブラリを読み込もうとすると、ランタイム エラーが発生します。
java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1285]: 86 cannot locate 'atof'....
私は NDK を使用した Android 開発の初心者なので、フラグやコンパイラ ディレクティブなどを見落としている可能性があります。
私のandroid.mk
ファイルは次のとおりです。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LS_CPP=$(subst $(1)/,,$(wildcard $(1)/$(2)/*.c))
LOCAL_MODULE := libA
LOCAL_SHARED_LIBRARIES := \
libgmodule-2.0 \
libgobject-2.0 \
libgthread-2.0 \
libglib-2.0
LOCAL_SRC_FILES:= sourceFile.c
include $(BUILD_SHARED_LIBRARY