0

私は次のコードを持っています...

gl_game.cpp

#include <camera/Camera.h>
....
using namespace android;
LOGI("Number of cameras are... %d", Camera::getNumberOfCameras());

そしてAndroid.mk...

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../AOSP/frameworks/av/include $(LOCAL_PATH)/../../AOSP/frameworks/native/include $(LOCAL_PATH)/../../AOSP/system/core/include $(LOCAL_PATH)/../../AOSP/hardware/libhardware/include

コンパイルしようとすると、リンカ エラーが表示されます...

error: undefined reference to 'android::Camera::getNumberOfCameras()'

これは、Camera.cpp を含む .so を LOCAL_LDLIBS に追加したことがなく、リンカーに追加する適切な .so ファイルが見つからないことが原因であると想定しています。誰でもこれを行う方法を知っていますか?

4

1 に答える 1

0

これは私がやったことです。ここでの問題は、.so ファイルの実装がメーカー固有であることだと思います。私はテストしているだけで、まだそこまで行っていないので、ルート化されたエミュレーターを使用して、エミュレーターデバイス自体から .so を取得しました...

adb pull /system/lib/libcamera_client.so ../project/jni/lib/

次に、次を Android.mk に追加しました....

include $(CLEAR_VARS)
LOCAL_MODULE := libcam
LOCAL_SRC_FILES := lib/libcamera_client.so
include $(PREBUILT_SHARED_LIBRARY)
...
LOCAL_SHARED_LIBRARIES := libcam

わかりました...

I/libgl2jni( 843): カメラの数は... 0

これは、エミュレーターに期待するものです...

同じファイルが私の ASUS タブレットでも機能しました...

I/libgl2jni( 8175): カメラの数は... 2

于 2013-07-24T15:46:32.867 に答える