teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

2015/12/11 07:17

投稿

EterLabyr
EterLabyr

スコア13

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,6 @@
1
1
  マルチOSな3DゲームをJavaで作ろうと思い立ったところ、c++でDirect3DとOpenGLに対応した
2
2
  、物理演算も可能なゲームエンジンライブラリを発見しました。とりあえずWindowsでdllの動作を確認しようとVC++でコンパイルしてはみたものの、全く連携方法がわかりません。Jnaを使ってdllを呼び出す方法も考えたのですが、そもそもVC++でコンパイルするとextern "C"なしではJnaから呼び出せなくなるようです(修飾名を使って呼び出せば出来るのかもしれませんが、マルチOSの主旨に反します)。そこでコマンドを使ってコンパイル前のソースの全ての__declspec(dllexport)のある行頭にextern "C"を付けてみたのですが、無論templateやoverrideでエラーだらけになるわけで……
3
3
  どうしたらそのc++ライブラリをJavaから呼び出せるのでしょうか?
4
+ 追記
4
- ライブラリ名はUrho3Dです。
5
+ ライブラリ名はUrho3Dです。
6
+ BridJでの手動コードでテストdllの読み込みが行えたため、BridJのJavaコードを自動生成するプログラムを書きながらもっと楽な手段の回答を待つことにします。

2

2015/12/11 07:17

投稿

EterLabyr
EterLabyr

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- c++とJava連携方法
1
+ c++のライブラリをJavaで使う方法
body CHANGED
@@ -1,3 +1,4 @@
1
1
  マルチOSな3DゲームをJavaで作ろうと思い立ったところ、c++でDirect3DとOpenGLに対応した
2
2
  、物理演算も可能なゲームエンジンライブラリを発見しました。とりあえずWindowsでdllの動作を確認しようとVC++でコンパイルしてはみたものの、全く連携方法がわかりません。Jnaを使ってdllを呼び出す方法も考えたのですが、そもそもVC++でコンパイルするとextern "C"なしではJnaから呼び出せなくなるようです(修飾名を使って呼び出せば出来るのかもしれませんが、マルチOSの主旨に反します)。そこでコマンドを使ってコンパイル前のソースの全ての__declspec(dllexport)のある行頭にextern "C"を付けてみたのですが、無論templateやoverrideでエラーだらけになるわけで……
3
- どうしたらそのc++ライブラリをJavaから呼び出せるのでしょうか?
3
+ どうしたらそのc++ライブラリをJavaから呼び出せるのでしょうか?
4
+ ライブラリ名はUrho3Dです。

1

2015/12/11 07:08

投稿

EterLabyr
EterLabyr

スコア13

title CHANGED
File without changes
body CHANGED
@@ -1,2 +1,3 @@
1
- マルチOSなアプリケションをJavaで作ろうと思い立ったところ、c++でいいライブラリを発見しました。りあえずWindowsでdllの動作を確認しようとVC++でコンパイルしてはみたものの、全く連携方法がわかりません。Jnaを使ってdllを呼び出す方法も考えたのですが、そもそもVC++でコンパイルするとextern "C"なしではJnaから呼び出せなくなるようです(修飾名を使って呼び出せば出来るのかもしれませんが、マルチOSの主旨ます)。そこでコマンドを使ってコンパイル前のソースの全ての__declspec(dllexport)のある行頭にextern "C"を付けてみのですが、無論templateやoverrideでエラーだらけになるわけで……
1
+ マルチOSな3DゲをJavaで作ろうと思い立ったところ、c++でDirect3DOpenGL対応した
2
+ 、物理演算も可能なゲームエンジンライブラリを発見しました。とりあえずWindowsでdllの動作を確認しようとVC++でコンパイルしてはみたものの、全く連携方法がわかりません。Jnaを使ってdllを呼び出す方法も考えたのですが、そもそもVC++でコンパイルするとextern "C"なしではJnaから呼び出せなくなるようです(修飾名を使って呼び出せば出来るのかもしれませんが、マルチOSの主旨に反します)。そこでコマンドを使ってコンパイル前のソースの全ての__declspec(dllexport)のある行頭にextern "C"を付けてみたのですが、無論templateやoverrideでエラーだらけになるわけで……
2
3
  どうしたらそのc++ライブラリをJavaから呼び出せるのでしょうか?