【发布时间】:2011-12-20 22:25:19
【问题描述】:
我用 NDK 编译了 Sox et al。所以,我拥有所有 Android 友好的共享库。
我创建了一个simple test file,它调用了一个 sox 函数。 NDK 构建告诉我:
undefined reference to `sox_open_read'
sox_open_read 在 sox.h 中定义。我知道它正在查找 sox.h,因为它给了我关于该文件的警告:
In file included from (...)/sox/sox.h:19
所以也许它想在实际的 libsox.so 中找到 sox_open_read。好吧,我已经尝试了大约 100 种不同的方法来告诉它 sox 共享库在哪里,例如
LOCAL_SHARED_LIBRARY := sox
LOCAL_LDLIBS := -L$(LOCAL_PATH_FULL)/jni/libs/libsox.so
但是,如果我将 Sox 指定为静态库,它将起作用:
#LOCAL_SHARED_LIBRARY := sox
LOCAL_STATIC_LIBRARIES := sox
LOCAL_LDLIBS := -L$(LOCAL_PATH_FULL)/jni/libs/libsox.so
据我了解,我不想静态链接到 sox 库 - 我想动态链接到它。
【问题讨论】:
标签: android c linker android-ndk ld