2012-07-19 174 views
4

我試圖使用NDK在eclipse 但下面的教程此錯誤時彈出,我不知道它從何而來類型'JNICALL'無法解析,?

這是我的.h文件

/* DO NOT EDIT THIS FILE - it is machine generated */ 
#include <jni.h> 
/* Header for class com_example_myproject_MainActivity */ 

#ifndef _Included_com_example_myproject_MainActivity 
#define _Included_com_example_myproject_MainActivity 
#ifdef __cplusplus 
extern "C" { 
#endif 
/* 
* Class:  com_example_myproject_MainActivity 
* Method: getMyData 
* Signature:()Ljava/lang/String; 
*/ 
JNIEXPORT jstring JNICALL Java_com_example_myproject_MainActivity_getMyData 
    (JNIEnv *, jobject); 

#ifdef __cplusplus 
} 
#endif 
#endif 

錯誤=類型「JNICALL」無法解析

我也有代碼視圖的語法錯誤,但這些都不這些看似與JNIEXPORT

+0

這裏讀我的答案:http://stackoverflow.com/questions/11666711/type-jint-could-not-be -resolved-and-jnienv-jclass/12568538#12568538也許它會幫助你。 – Yury 2012-09-24 15:51:40

回答

2

在大多數情況下,我JNICALL誤差之間出現在windows中使用。我99%肯定,你可以添加

#define JNICALL

(其定義爲空白)

同樣的,JNIEXPORT。

+0

不應該在eclipse和JDK已經知道的文件或系統中聲明,是的那些定義將擺脫錯誤,但會使任何預期的功能無效,不會嗎? 謝謝, – aerlfredith 2012-07-19 13:06:39

+0

那麼通常JNI.h已定義爲_WIN32_基本上將JNICALL分配給__stdcall和JNIIMPORT以__declspec(dllimport)。 Unix系統不需要這些額外的標籤,所以他們將它們定義爲遠離。 – yhyrcanus 2012-07-19 13:09:07

+0

解決 我的教程忽略提及一些額外的包括,顯然在他們的ndk和eclipse版本,這些包括可以稍後添加 謝謝無論如何 – aerlfredith 2012-07-19 13:19:34

0

我剛剛遇到這個問題,這裏是我的解決方案。如果您有Java 7工作在Linux上,確保這兩個include路徑添加到您Includes

/usr/lib64/jvm/java-7-oracle/include/linux 
/usr/lib64/jvm/java-7-oracle/include 
1

轉到項目屬性 - > C/C++常規 - >路徑和符號。

  1. 選擇包括標籤,點擊添加按鈕窗口右側
  2. 選擇包括目錄從文件系統

例如: C:\ Program Files文件(86 )\的Android \ Android的SDK \ NDK \機器人-NDK-R10 \平臺\機器人-L \拱形臂的\ usr \包括。

它會問你是否要重建,點擊是...完成