タグ

C++に関するjigarashiのブックマーク (9)

  • 『C++からJavaを呼び出しますぜ』

    eclipse上でc++コードをデバッグしたいという野望は現在中断。 このままだと進まないのでeclipse上でc++のコンパイルが出来たところで先に行くのです。 で、次はc++からJavaの関数の呼び出しです。 c++->Javaの呼び出しの基はこんな感じ。 c++側 jclass jc = env->FindClass("com/java/package/ClassName"); if (jc == 0) { return false; } // メソッドの取得 jmethodID id = env->GetStaticMethodID(jc, "function", "()V"); //メソッドを実行。 env->CallStaticVoidMethod(jc, id); java側 package com.java.package; public class ClassName

    『C++からJavaを呼び出しますぜ』
  • 【Android NDK】JNIEnv*の問題 - ニャッキ格闘列伝

    現在テストしているプログラムを実行していると たまに落ちることがありました。 よく調べていくとJNIEnv*の位置が変わっていました。 現在の手順としては、起動時にJNIをたたき、引数で渡されたJNIEnv*をグローバルに 保存して使いまわすという方向でやっていました。 危険だとはわかっていましたがやはりガベコレの関係か場所が変わってしまうっぽいです。 JNIEnv*がないとCからJavaを呼び出すことができないのでどうにかすれば 取得できるだろうと思いいろいろと探してみました。 通常のJNIでは、JNI_GetCreatedJavaVMs関数を使用しJavaVM*を取得し、 これのメソッドのGetEnv関数を使用するとできるらしい。 Link:JNI JavaVMメモ(Hishidama's Java native interface JVM Memo) 試してみたところ、リンク時にエラ

    【Android NDK】JNIEnv*の問題 - ニャッキ格闘列伝
  • JNI JavaVMメモ(Hishidama's Java native interface JVM Memo)

    他言語からJava実行 JNIを使って、C言語/C++からJavaVMを実行してメソッドを呼び出すことも出来る。 C言語またはC++内でJavaVMを生成(取得)し、後は通常のJNIと同様にコーディングする。 Windowsでの実行環境 リンク時にjvm.libが必要。→(VC++)ライブラリの追加方法 jvm.libは「%JAVA_HOME%\lib」に在る。→(VC++)ライブラリのパス指定方法 実行時にjvm.dllが必要。 jvm.dllは「%JAVA_HOME%\jre\bin\client」や「%JAVA_HOME%\jre\bin\server」に在る。 →(VC++)デバッグ実行時の環境変数PATHの追加方法 JavaVMの生成・破棄 JavaVMのオブジェクトを作成するには、jni.hで宣言されているJNI_CreateJavaVM関数を使う。 これに渡すための引数の初期

  • NativeActivityからのJavaの呼び出し[Android] - 芸軌社公式ブログ

    ここ2日間くらい、AndroidでNativeActivityから自作Javaクラスのメソッドが呼び出せずに悩んでいましたが、無事解決できたのでNativeActivityのCのコードからJavaを呼び出すサンプルを載せます。 Javaクラスの作成 まずは、EclipseでAndroid NDKのサンプルからNativeActivityのプロジェクトを作ります。 Android NDKのサンプルからNativeActivityのプロジェクトを読み込み NativeActivity/srcフォルダにandroid.app.NativeActivityを継承して適当な名前のクラス(ここでは"TestJNI")を作ります。 NativeActivityを継承してクラスを作成 ここに使いたいコードを書いていきます。 // TestJNI.java package com.example.nativ

  • JNIコーディングメモ(Hishidama's Java native interface coding Memo)

    JNIのC言語/C++側のコーディング C言語とC++の違い コーディング例 JNI関数の概要 プリミティブ型・参照型(JavaオブジェクトのC/C++での扱い) String型 [/2006-11-09] 配列型 クラスの取得・インスタンス生成 [/2008-02-02] オブジェクトのメソッド呼び出し [/2008-02-07] オブジェクトのフィールド操作 ローカル参照の終了 [2006-11-09] 例外処理 [/2007-10-13] jni.hの中でC言語/C++で使える構造体 (クラス)が定義されているが、 コンパイラーがC言語の場合とC++の場合では定義のされ方が異なり、使い方も少し異なる。 JniJikken.c: JniJikken.cpp: #include "JniJikken.h" JNIEXPORT jbyteArray JNICALL Java_JniJikk

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • sprintf

    書式指定変換した出力を文字列に格納します 【書式】 #include <stdio.h> int sprintf(char *str, const char *format, ... ); 【説明】 書式formatにしたがって、printf関数と同様の変換を行った出力を、文字列strに格納します。 この関数を知っているのと知らないのとでは、文字列を編集する効率が全然違います。知らないと、文字列を編集するのに、strcat関数などを用い、とんでもない長文を書く羽目になってしまいます。 【引数】 char *str : 変換した出力を格納する文字列。 const char *format : 書式指定文字列。 詳しくはprintf関数を参照のこと。 ... : 可変個引数。この引数を書式指定に従い変換します。書式指定文字列はこの引数と同数必要です。 【戻り値】 成功時 : strに格納した文

  • C++マニアック,ハンガリアン記法,ハンガリアンノーテーション

    ハンガリアン記法など ハンガリアン記法とは変数名などを命名するときに、先頭に変数型を示すプレフィックスを書くようにする記法です。最初にハンガリーの人が考えたのでハンガリアン記法とかハンガリアン・ノーテーションというようです。 C++ は、変数には変数型が厳格に決まっているので、ハンガリアン記法を使うことは、プログラムの見通しをよくするために大いに意味があります。ハンガリアン記法は、その命名法が厳格に決まっているわけではなく、プログラマ毎に記述の方法が異なるというのが現状です。ここでは、このサイトで私が使用している記法について解説します。一つの例としてご覧いただいて、気に入ったらそのまま使ってみてください。 また、ハンガリアン記法以外にも、プログラミング上好ましい書き方というものがあるので、これに関する私なりの考え方や提案などについても記述します。 ハンガリアン記法 クラス、列挙型、名前空間

  • C++マニアック,よくわかるC++言語プログラミング講座

    What's new 2008/06/30 Google 検索窓をつけてみました。 2008/06/14 身長や体重など複数の基準でソートする例 を追記。 2008/06/14 英文字文書を読んで、文字数の頻度順にソートする例 を追記。 古い What's new 当サイトで提示するサンプルコードは、あまりにも単純明快で、一見つまらないぐらいに見えるはずです。しかし、もしあなたがそう感じたのであれば、それは、ねらいどおりで、大成功と言えます。ちょっと難解と思われている C++ が、つまらなく見えるほど平易に解説されているということですから。 基礎(入門)編 その他(非 C++ 的) エッセー C++ はアセンブリ言語のように軽快であるにもかかわらず、仮想クラスやクラスの継承、オペレータのオーバーロード、そして、テンプレートと、高級言語のプログラミングテクニックを余すところなく駆使で

  • 1