sigemptyset()NDK UnsatisfiedLinkError dlopen()
我的Android NDK应用程序中的某个C代码调用signal.h中定义的sigemptyset()
函数。 我正在使用NDK-r9
构建我的项目。
在编译c代码之后,我的库文件名为“libnative-service.so” 。 但是在运行应用程序时,我得到关于sigemptyset()
的以下错误。
我错过了什么?
09-22 15:13:09.102: E/art(3718): dlopen("/data/app-lib/com.project/libnative-service.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "sigemptyset" referenced by "libnative-service.so"... 09-22 15:13:09.103: D/AndroidRuntime(3718): Shutting down VM 09-22 15:13:09.106: E/AndroidRuntime(3718): FATAL EXCEPTION: main 09-22 15:13:09.106: E/AndroidRuntime(3718): Process: com.project, PID: 3718 09-22 15:13:09.106: E/AndroidRuntime(3718): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "sigemptyset" referenced by "libnative-service.so"...
此函数似乎是内联声明的:
static __inline__ int sigemptyset(sigset_t *set) { memset(set, 0, sizeof *set); return 0; }
所以它应该已经在已编译的库中解析,而不是由运行时链接填充的依赖项。 如果它没有得到解决,那么您的库似乎没有正确构建。
您是否可以链接错误的标题? 如果您使用的是非ndk signal.h,则可能无法正确编译此函数的使用。
- compilin错误:字段必须具有常量:android 2.3.4源代码永远不支持’结构中的可变长度数组’扩展名
- Android ndk build无法构建32bit可执行文件
- 在Eclipse中Navit Android项目
- 堆腐败 – Android原生代码中的SEGV_MAPERR
- JNI调用非静态函数段错误
- 如何在C中使用’mmap’命令分配特定的内存区域? (Android NDK)
- Android NDK套接字connect()在3g时失败时返回0
- 如何在Android.mk的LOCAL_CFLAGS中动态获取当前编译器目标文件名?
- Eclipse无法读取RenderScript .rs文件的代码格式