17

jni c コードを使用して単純な helloWorld android/java アプリケーションを構築しようとしています。Windows 7でEclipse Indigoを使用しています。ndk r8をスペース以外のパスにインストールし、ndk-build.cmdでcライブラリを最終的に正常にビルドしました。ただし、javah が生成するヘッダー ファイルには未解決のエラーがあり、

  • タイプ「jint」を解決できませんでした
  • タイプ「JNIEnv」を解決できませんでした
  • タイプ「jclass」を解決できませんでした

昨日は jni.h インクルードが表示されませんでしたが、今朝の再起動後、そのエラーは消えました。未解決の JNIEXPORT と JNICALL エラーもありましたが、それらを #defining することで解決したようです。上記の最後の 3 つで立ち往生。GoogleとStack Overflowで回答を検索しましたが、誰かが解決策を見つけたとしても、その解決策が何であるかはわかりません:(

プロジェクト プロパティの Java および C/C++ パースペクティブのインクルードを確認しました。必要な jni.h ディレクトリが含まれているようです。アームプラットフォームには android-14 を使用しています。ターゲットは 4.0.3 の IceCream Sanwich (紛らわしいことに API 15 ですか?!) です。これをテストするためにAVDを使用しようとしていました。プロジェクトを閉じて再度開き、Eclipse から削除して再インポートしようとしましたが、どれもうまくいきませんでした。

いくつかのインクルードがありませんか? どれをどこに設定すればよいですか? 助けていただければ幸いです。

4

3 に答える 3

17

最近、私は同じ問題に直面しました。私の場合、問題はEclipseプロジェクトをC ++プロジェクトに変換したことでしたが、Cタイプを使用していました。したがって、この問題を解決するために、プロジェクトディレクトリのファイルから次<nature>org.eclipse.cdt.core.ccnature</nature>の行を削除しました。.project

<natures>
 <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
 <nature>org.eclipse.jdt.core.javanature</nature>
 <nature>org.eclipse.cdt.core.cnature</nature>
 <nature>org.eclipse.cdt.core.ccnature</nature>
 <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
 <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
 <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
</natures>

次に、Eclipseを再起動します。詳細については、これを読むことができます。

于 2012-09-24T15:50:42.107 に答える
7

次のように、ディレクティブの#undef __cplusplus直前にa を追加してみてください。#include

#undef __cplusplus
#include <string.h>
#include <jni.h>

これにより、Eclipsenon-c++は NDK オブジェクトの定義を考慮するようになります。

于 2012-08-25T12:52:07.627 に答える