2011-12-25 134 views
1

我有一个问题。我想用NDK r7在Android 2.3.4中创建一个线程。当我编译此代码:错误与memset编译android中的线程的c + +代码ndk

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <math.h> 
#include "System.h" 
#include <jni.h> 
#include <pthread.h> 

unsigned int CreateThread(void* function(void*) , void * context) 
{ int   ret; 
    pthread_t thread; 
    ret = pthread_create(&thread, NULL, function, context); 
    if(ret != 0) 
    { return 0; 
    } 
    return (unsigned int) thread; 
} 

我得到这些错误信息:

E:/Code/Android/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/include/stdarg.h:102: error: expected ';' before 'typedef' 
In file included from E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/pthread.h:32, from jni/system.cpp:13: 
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h: In function 'int sigemptyset(sigset_t*)': 
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h:84: error: 'memset' was not declared in this scope 
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h: In function 'int sigfillset(sigset_t*)': 
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h:90: error: 'memset' was not declared in this scope 

我错过了包括或定义的东西拿到memset的错误?

我真的不确定是什么问题,为什么memset错误apear。我也试过包括cstring,但后来我得到了大量的错误。

回答

1

我发现了这个问题。我有我自己的类,它有一个名为“string.h”,并驻留在我的jni目录中的文件名。因此,驻留在ndk中并具有必要memset函数声明(等等)的“string.h”未包含在内。

选项是要么改变我的类的文件名/名称,要么直接包含直接路径的ndk中的string.h。

我选择了第一个选项,并更名为我串类,并尝试从现在开始,我的课,不使用标准的文件名...

+0

其实我发现这个问题,因为别人绊倒它,以及所以我决定按原样留下问题。我希望有时会有更多的答案在网上被删除而不被删除,因为即使一些“本地化问题”可能对某些人有用...... – HardCoder 2011-12-29 19:24:31