【发布时间】:2011-08-27 20:51:11
【问题描述】:
一个共享库可以从另一个共享库加载和调用函数吗?
我有共享库 libDsmTestLib.so 使用另一个共享库 libDsmShared.so 和 libPINDsmShared.so
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := DsmTestLib
LOCAL_SRC_FILES := DSM_Library.cpp
LOCAL_LDLIBS := -lDsmShared
LOCAL_LDLIBS += -lPINDsmShared
include $(BUILD_SHARED_LIBRARY)
当我创建 libDsmTestLib.so 并希望像这样在我的 android java 应用程序中使用它时:
package com.dsm;
import android.app.Activity;
import android.os.Bundle;
public class dsmTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
static {
try {
System.loadLibrary("DsmTestLib");
}
catch( UnsatisfiedLinkError e ) {
System.err.println("Native code library failed to load.\n" + e);
}
}
}
在 catch 块中出现错误
无法加载库:link_image[1962]: 33 无法加载需要的库 'libDsmShared.so' 用于 'libDsmTestLib.so' (加载库[1104]:库 'libDsmShared.so' 未找到)
Loadlibrary 函数找不到使用我的主库 libDsmTestLib.so 的库 libDsmShared.so,谁能告诉我为什么?我该怎么做才能解决这个问题?
附加信息
我有一个静态库(.so 用 C++ 编写),它具有我想从我的 Java android 应用程序中使用的功能,为此我创建了 .cpp 和 .h 文件,在其中我从先前创建的库中调用该函数。
【问题讨论】: