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

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

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

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

667閲覧

Android UnityでのOpenAL-Soft共有ライブラリの利用について

to2836

総合スコア16

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/09/29 01:52

編集2018/09/29 01:58

前提・実現したいこと

私は現在ubuntu(Linux)上でOpenAL-Softの共有ライブラリ(Android用libopenal.so)を生成しました。そしてこれをUnityにPluginさせライブラリを使用したいのですがUnityのScriptはC#なので、どのようにしてOpenALの関数を使うか困っています。

考えた方法

そして考えた方法の1つが、またubuntu(Linux)上で自作のCファイル(OpenALの関数を使う独自の関数)を作成し、外部ライブラリ(libopenal.so)とこのCファイルをリンクさせて1つの共有ライブラリを生成させ、これをUnityにPluginさせ独自の関数を呼び出す方法です。

質問

この外部ライブラリ(libopenal.so)と自作のCファイルをリンクさせ1つの共有ライブラリを生成する方法がよく分りません…
https://neno-garden.com/blog/2018/06/12/so-using-cmake/ こちらの方法で試してみたのですがうまくいきません。(外部ライブラリをリンクさせるときadd_executable(…)のような実行ファイルの生成は必ず必要なのでしょうか…?)

よろしくお願いします。
ps:他に良い方法がありましたら教えてください。

補足情報(FW/ツールのバージョンなど)

使用中のPC:mac OS X
開発環境:virtual machine ubuntu 18.04.1 Desktop (Linux)

Unity version:2018.2.0f2
Android Phone Architecture : ARM Cortex-A53
必ずOpenAL-Softを使用し音を再生させたいです…

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

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

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

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

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

fiveHundred

2018/09/29 02:35

・libopenal.soは、自作ライブラリと一緒にUnityのプロジェクト内に入っておりますでしょうか?。・現状のCMakeLists.txtはどのようになっておりますでしょうか?
fiveHundred

2018/09/29 02:38

あと、「うまくいきません」だと「ライブラリが作られない」のか「ライブラリは作れるけど関数が実行できない」のか(あるいはそれ以外なのか)分からないので、そこも明確にしてください。
to2836

2018/09/29 06:50

いきなりlibopenal.soから始めると難しいので参考にしたhttps://neno-garden.com/blog/2018/06/12/so-using-cmake/をマネてやってみました。CmakeLists.txtはCMAKE_MINIMUM_REQUIRED(VERSION 3.5) PROJECT(testProject) set(CMAKE_SYSTEM_VERSION 16) set(CMAKE_ANDROID_NDK /home/to2836/Desktop/workbench/android-ndk-r16b) SET(CMAKE_FIND_ROOT_PATH /home/to2836/Desktop/workbench/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9) SET(CMAKE_VERBOSE_MAKEFILE true) SET(CMAKE_C_COMPILER "${HOST}-gcc") SET(CMAKE_CXX_COMPILER "${HOST}-g++") include_directories(/home/to2836/Desktop/workbench/test/include) link_directories(/home/to2836/Desktop/workbench/test/lib) add_executable(Main main.c test.c) target_link_libraries(Main aaa) ADD_LIBRARY(bbb SHARED test.c)のように書き、ライブラリは生成されるのですがUnity側で.apkファイルを生成しスマートフォンで試したところUnable to find bbb(libbbb.so)と出力されライブラリを見つけられない状況です。CMakeLists.txtは勘で書いたので絶対違うと思います(泣)(どう書けば良いのか全く分からない状態です…)
to2836

2018/09/29 06:55

aaaの外部ライブラリは他のフォルダでただ整数をリターンする関数があるCファイルを作りそれを共有ライブラリとして生成させたものです。test.cはaaaライブラリの関数を呼び出し整数を受け取りリターンする関数があります。Unity側ではその関数を呼び出しています。
fiveHundred

2018/09/29 07:14

この欄では改行が使えないため、コードを提示するときは質問欄に追記する形でお願いします(「```」で囲むのを忘れずに)。また、add_executable()は実行ファイルを作るものなので、使わないと思います。あと、関係がよく分からないのですが、Unityの関数→aaa→bbbの順番に呼び出したいということでしょうか?
to2836

2018/09/29 07:32 編集

teratailを初めて使ったので…すみません…add_executable()を外すとbuildの際エラーを吐き出すのですが…さっぱりです(泣) 関係はUnityにlibbbb.soをPluginさせbbb内のtest.cの関数(外部ライブラリaaaにある関数(整数をただreturnする関数)から整数を受け取りUnity側にreturnする関数)をUnity側で呼び出します。Unity→bbb→aaaです。
guest

回答1

0

ベストアンサー

(「質問への追記・修正の依頼」での返信です)
(CMakeは詳しくない&未検証なので、間違っていたらすいません)

まずは、以下のようにしてlibaaa.soを生成します。
(aaaとbbbをまとめてやる方法はあると思いますが、すでにsoファイルが存在している前提とのことなので分けています)

CMake

1# …(前略) 2ADD_LIBRARY(aaa SHARED main.c)

次に、libaaa.soをリンクさせたlibbbb.soを、以下のようにして生成します。

CMake

1# …(前略) 2ADD_LIBRARY(bbb SHARED test.c) 3target_link_libraries(bbb aaa)

その後、libaaa.soとlibbbb.soをUnityに入れて実行してみてください。

libopenal.soを使う場合も同じようにすれば出来ると思います。

投稿2018/09/29 07:54

fiveHundred

総合スコア9803

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問