2

我正在尝试为 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'

当我用谷歌搜索该错误时,我发现它已在谷歌代码中报告为问题 19851。他们尚未进行任何修复,但他们建议添加修改后的 libc.so 和 sched.h 文件。我试过了,但没有用。

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

4

3 回答 3

1

尝试将此代码添加到您的 .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
于 2013-03-09T12:18:11.867 回答
0

通过将针对问题19851 附加的 libc.so 复制到最新版本的 ndk 来修复此问题。我正在使用 ndkr8 并将 libc.so 文件复制到 ndkr8d 解决了这个问题。

于 2013-02-11T11:13:49.620 回答
0

转到 Android NDK 页面并按照下载和安装说明进行操作。

https://developer.android.com/tools/sdk/ndk/index.html

我在 OSX 上,android-ndk-r10e-darwin-x86_64.bin 为我的设置修复了错误。

于 2015-05-28T00:18:26.827 回答