我正在尝试为x86 android体系结构构建一个cocos2dx项目,但是当我尝试编译它时会出现以下错误。
./obj/local/x86/curl.a(hostip.o):(.text.alarmfunc+0x21): undefined reference to `siglongjmp'
./obj/local/x86/curl.a(hostip.o): In function `Curl_resolv_timeout':
(.text.Curl_resolv_timeout+0x156): undefined reference to `sigsetjmp'
当我用Google搜索错误时,我发现它在Google代码中被报告为issue 19851。他们还没有做任何修复,但他们建议添加一个修改过的libc.so和sched.h文件。我尝试过这个并没有用。
有谁能告诉我如何解决这个问题。
答案 0 :(得分:0)
通过将响应issue 19851附加的libc.so复制到最新版本的ndk来解决此问题。我正在使用ndkr8并将libc.so文件复制到ndkr8d修复了这个问题。
答案 1 :(得分:0)
尝试将此代码添加到您的.c或.cpp模块之一:
#if __i386 && (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <setjmp.h>
#ifdef __cplusplus
extern "C" {
void siglongjmp(jmp_buf env, int val);
int sigsetjmp(jmp_buf env, int savemask);
}
#endif
void siglongjmp(jmp_buf env, int val)
{
longjmp(env, val);
}
int sigsetjmp(jmp_buf env, int savemask)
{
return setjmp(env);
}
#endif
答案 2 :(得分:0)
转到Android NDK页面&amp;按照下载和安装说明进行操作。
https://developer.android.com/tools/sdk/ndk/index.html
我在OSX上,android-ndk-r10e-darwin-x86_64.bin修复了我的设置错误。