在为x86架构编译android cocos2dx项目时,未定义引用`siglongjmp'错误

时间:2013-02-11 09:06:33

标签: android-ndk cocos2d-x android-x86

我正在尝试为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文件。我尝试过这个并没有用。

有谁能告诉我如何解决这个问题。

3 个答案:

答案 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修复了我的设置错误。