gpt4 book ai didi

android - sigemptyset() NDK 不满足链接错误 dlopen()

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:16 25 4
gpt4 key购买 nike

我的 Android NDK 应用程序中的某个 C 代码调用了 signal.h 中定义的 sigemptyset() 函数。我正在使用 NDK-r9 构建我的项目。

我的名为 “libnative-service.so” 的库文件在编译 C 代码后构建良好。但是在运行应用程序时,我收到以下关于对 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,您可能无法正确编译此函数的用法。

关于android - sigemptyset() NDK 不满足链接错误 dlopen(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com