- PR -

JNIを利用したいが、CPPをコンパイルできない。

1
投稿者投稿内容
れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2006-07-04 15:51
こんにちは。

JNIを練習してみようと思ったのですが、cppファイルのコンパイルが出来ません。
ちなみに、c系は一切やったことがありません。

http://www.hellohiro.com/native.htmのページのサンプルをそのまま使っているのですが、Windows用のやり方で、「bcc32 -IC:\j2sdk1.4.1_01\include -IC:\j2sdk1.4.1_01\include\win32 -tWD HelloWorldJNI.cpp
」コマンドを使うと


HelloWorldJNI.cpp:
エラー E2209 HelloWorldJNI.h 2: インクルードファイル 'jni.h' をオープンできない
エラー E2141 HelloWorldJNI.h 15: 宣言の構文エラー
エラー E2238 HelloWorldJNI.cpp 2: 'JNIEXPORT' の宣言が複数見つかった
エラー E2344 HelloWorldJNI.h 15: 一つ前の 'JNIEXPORT' の定義位置
エラー E2141 HelloWorldJNI.cpp 2: 宣言の構文エラー
*** 5 errors in Compile ***

というエラーが起こります。

javaのバージョンが違うかもと思い、今使っている1.5.0用に、C:\Program Files\Java\jdk1.5.0_05\includeというパスにしても同じです。

これはどうしてなのでしょうか?
教えてください。

加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2006-07-04 21:27
引用:

れんれんさんの書き込み (2006-07-04 15:51) より:

bcc32 -IC:\\j2sdk1.4.1_01\\include -IC:\\j2sdk1.4.1_01\\include\\win32

HelloWorldJNI.cpp:
エラー E2209 HelloWorldJNI.h 2: インクルードファイル 'jni.h' をオープンできない



どうしてかといえば、jni.hがないからかと。
そういえばjavaにはヘッダファイルに相当する概念が存在しないか、、

interfaceだけ書いたjavaファイルがそれになるのか。。。無理っぽいな。

まぁとにかく"C:\\j2sdk1.4.1_01\\include"ディレクトリにjni.hが必要です。
-Iの"I"はインクルードディレクトリを指します。

すべかつ
会議室デビュー日: 2008/08/10
投稿数: 1
投稿日時: 2008-08-10 03:01
>れんれんさん
jni.hがあるフォルダの指定が終わったら、
あとは。。。こんな感じでいけますよ!

◇注意◇
フォルダ名にスペースが入ってる場合は以下のように""(ダブルクォーテー)で囲わないといけない。
あとは、ちゃんとjni.hが以下のような指定したフォルダ配下(ここだとC:\Program Files\Java\jdk1.5.0_06\include)にあるかです。。。
bcc32 -I"C:\Program Files\Java\jdk1.5.0_06\include" -I"C:\Program Files\Java\jdk1.5.0_06\include\win32" -tWD HelloWorldJNI.cpp

[ メッセージ編集済み 編集者: すべかつ 編集日時 2008-08-10 03:02 ]
1

スキルアップ/キャリアアップ(JOB@IT)