MingWとEclipse CDTでWin32プログラムでJNIのランチャー作成

XP sp3で挑戦
まずMingWをインストールする。
01mingdown

デフォルトのフォルダへ
02minginst
msysは今回は使わないと思うけどとりあえずインストールgcc-g++は必須のはず。
3minginst2

次にjavaをインストール。
clipshot 2015-12-15 07-16-41
警告はスルー。8.66をインストールした。PATH関係でエラーが出るかもしれないのでいったんログオフ。

次にeclipse CDTのインストール、eclipse.orgへ行ってCDTをダウンロード、ここではeclipse-cpp-mars-1-win32.zipをダウンロードしてC:\に解凍。

起動しようとするとすぐ終了してしまうので、コマンドラインからeclipsec.exeで起動してみる。
clipshot 2015-12-15 07-24-39
メモリーが足りない?eclipse.iniの最後を以下のように書き換えて起動。

起動できた。
clipshot 2015-12-15 07-27-51
とりあえずHello World C++というのを作ってみる
clipshot 2015-12-15 07-32-37
メニューから{Project][Build All]

ビルドできた。次に[Run][Run Configuration]で以下のように設定。というか自動で作られる。
clipshot 2015-12-15 07-36-21
[Run][Run]を実行。しかし!!!Hello World!!!が表示されないので、コマンドラインから起動してみると以下のエラーがでた。
clipshot 2015-12-15 07-39-41

リンカオプションに-static-libgcc -static-libstdc++をつけて解決
clipshot 2015-12-15 20-35-04
clipshot 2015-12-15 20-36-28
コンソールを出さないWindowsプログラムを作るため、Makefileプロジェクトを作った。
clipshot 2015-12-16 03-06-44

ソースファイル

メイクファイル

フラグの指定の仕方が強引だがLDFLAGSが効かないみたいなので今はこれで。

実行
clipshot 2015-12-16 03-22-35

これでwin32アプリの準備はできたので、JNIを利用してjavaのランチャーを作る。jni.hがJDKに入ってるので仕方なくJDK7をインストール。
mymain()を作成。http://homepage2.nifty.com/igat/igapyon/diary/2006/ig061108.html からコピペ

メイクファイル修正

ビルドするとエラー

jvm.libがこの関数をエクスポートしてないみたいなので、dllから直接よぶ。今回はjvm.dllの位置は固定でやる。

これでVMは作れたのでパラメータを調節すれば動くだろう。
CDTはいろいろくせがあって慣れないと使いづらい。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)