質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

343閲覧

C++とjavaの受け渡し

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2017/08/20 08:40

プログラミング初心者です.
javaで取得した数値(String型)をC++に渡し,C++内で処理をしたあと,処理後の結果(String型)をjavaに返す,というようなプログラムを作成したいと考えています.

色々と自分で検索しましたが,javaとC++の受け渡し方法がわからず困っています.
JNIといったツールを利用しなければ受け渡しはできないのでしょうか?

あまりプログラムを書いたことがなく,よくわかっていません.
抽象的な質問で申し訳ありませんが,もしわかる方がいらっしゃいましたら教えていただけると嬉しいです.よろしくお願いいたします.

エディタはjava,C++ともにEclipseを利用しています.
OSはWindows7です.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

azio_group さんの書かれている JNA を使うと、Java からネイティブ関数へアクセス出来る様になります。
これは、あくまでCレベルの関数を呼び出せるという意味です。

かたや JNI は始めに Java のインタフェースからそれを呼び出すC言語のスタブを吐き出し、そこに実装を書いていくスタイルになります。つまりJavaからJavaのクラスの様にインスタンスが起こせて、そのメソッドを叩いたら実はそこではC言語で書いた処理が動くという事をやられたいならば JNI を使って下さい。

そうではなく単に DLL を呼び出したいというニーズであれば JNA を使って下さい。

投稿2017/08/20 12:02

編集2017/08/20 12:03
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/20 12:52

回答ありがとうございます.大変無知で申し訳ありませんが,もう少しご教授ください.つまり,javaで数値i=100というのがあり,そのiをC++に渡し,C++内でa = i + 1のような処理をしたあと,java側にaを渡すということをしたければJNIの方がよい,という認識でよろしいでしょうか?理解力が乏しく,大変申し訳ないです.
mattn

2017/08/20 14:28

その程度(プリミティブな型)であれば JNA で呼び出し可能です。例えばユーザに MyLib.DoSomething() という呼び出し実行してもらい、その関数でCレベルでないと実行できない様な物を実装する必要があるのなら、それは JNI に限ります。
退会済みユーザー

退会済みユーザー

2017/08/21 01:56

なるほど,詳しい説明をありがとうございました!それならばJNAで解決出来そうです.これから試してみようと思います.回答ありがとうございました!
guest

0

ベストアンサー

C++で作成したDLLの呼び出しだとJNAが使えそうです
http://m-shige1979.hatenablog.com/entry/2016/12/21/080000

Google検索 「Java DLL 呼び出し」
https://www.google.co.jp/search?q=Java+DLL+呼び出し

投稿2017/08/20 08:45

編集2017/08/20 08:46
MMashiro

総合スコア2378

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/20 10:34

素早い回答ありがとうございます!教えてくださったURLを参考に,一度作成してみようかと思います.URL内だとC++で文字を表示させjavaで表示するプログラムになっていますが,表示ではなくjava側に渡してそれをjava側で利用することも可能なのでしょうか?あまり理解しておらずすみません.
退会済みユーザー

退会済みユーザー

2017/08/20 12:54

azio_groupさん,コメントへの回答ありがとうございます.javaに対しての質問まで答えていただいて大変嬉しいです.自分でももう少し調べ,試行錯誤してみようと思います.ありがとうございました.またC++でわからないことがあれば質問するかと思いますが,よろしければまたご教授いただけますと幸いです.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問