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

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

ただいまの
回答率

90.32%

  • C++

    3781questions

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

  • Visual Studio

    2007questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • TensorFlow

    758questions

  • DLL

    90questions

    DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

.so .dylib VisualStudio Code TensorflowC++の共有ライブラリ 使い方?が分からない

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 307

_Victorique__

score 968

tensorflow C++ API のためにsoファイルを作成してそれをdylibに変換しました。

いざVScodeを使用してビルドしようと試みたのですがそもそもdylibというものをどのように使えば
いいのかが分からないためにPathの設定やらが上手くいっていないせいかファイルがないと怒られて
しまいます。
VisualStudioでは共有ライブラリを設定する項目があるのですが、VScodeにはそれが見当たりません。

このサイトを参考にしてやっているのですが、
soファイルを作成した後に何故ヘッダーファイルを集めているのか分かりません。一体soファイルは何をしているのでしょうか?
集めたヘッダーファイルとの関係はどういうものなのでしょうか?

開発環境

Mac OS HighSierra
VisualStudio Code
C++
Tensorflow

追記

Chirorian様

soとヘッダーファイルの関係
理解しました。ありがとうございます!

bazel,tensorflowに関して
ヘッダとライブラリを取り出して組み込む方針にしました。
しかし、以下のようなエラーが出てしまい解決できていない状況です。

./tensorflow/cc/ops/const_op.h:19:10: fatal error: 'tensorflow/cc/framework/ops.h' file not found

include "tensorflow/cc/framework/ops.h"

^~~~~~~
1 error generated.

これだと何故かconst_op.hは読めていてその中でインクルードしているものが見つからないと言われています。これはどうしてでしょうか?

so → dylibに変換に関して
http://memo.saitodev.com/home/tensorflow/build/
こちらのサイトを参考にしました。
実際にファイルの変換というよりはリンク情報を保持したまま拡張子を変更しているようです。
正直よく分かっていないです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kazto

    2018/07/25 17:01

    お使いの開発環境はなんでしょうか。Windows?Mac?Linux?

    キャンセル

  • _Victorique__

    2018/07/25 17:02

    > kaztoさん すみません、Macです!

    キャンセル

回答 3

checkベストアンサー

+1

こんにちは。

soファイルを作成した後に何故ヘッダーファイルを集めているのか分かりません。一体soファイルは何をしているのでしょうか?

Tensorflowライブラリを使う場合、ライブラリ自身とヘッダ・ファイルが必要になります。そのために集めているのだと思います。

しかし、そのサイトの記載はよくわからんですね。

bazelを使わないで、自分のビルドシステムでmakeしたいときはどうすればいいんだろ。
なので調べてみました。
1. Tensorflowをソースからビルドする

うはっ、この飛躍は凄いです。(ご本人も実は判っていて書いているかも?)

Mac用にはプリビルド版が提供されているようですので、プリビルド版をインストールすればよいのではないでしょうか?
bazelを使いたくないのなら、ヘッダとライブラリを見つけて、それらを指定してご自身のプログラムに組み込めば良いです。ソースからビルドしてもどうせ同じ作業が必要ですから、ソースのビルドは省略することをお勧めします。

soファイルを作成してそれをdylibに変換しました。

逆質問で申し訳ないです。ちょっと興味あるのでこの方法を教えて下さい。
そんなことができることにちょっとびっくり。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/25 18:23

    > Chironianさん
     
    追記にて回答しましたのでご確認ください

    キャンセル

  • 2018/07/25 21:54

    > file not found
    の件は、「ヘッダとライブラリを取り出して組み込む方針にしました。」の際にインクルード・ファイルの取り出しに失敗しているのだと思います。

    公式に記載されている正規インストール方法でインストールしてもだめですか? 取り出したりせずにそのまま使うのが一番トラブルが少ない筈です。

    > so → dylibに変換に関して

    ありがとうございます。tensorflowをMac上でビルドしたら、拡張子が .so で出来てしまうので、コピーついでに .dylib へ変更しているということみたいですね。なるほどです。

    キャンセル

  • 2018/07/26 12:29

    回答ありがとうございます!
    公式に記載されている正規インストール方法とはどれをさしていますか?できれば教えていただきたいです。
    not foundの件は解決しましたがsymbol(s) not found for architecture x86_64というエラーが出てしまって進めませんでした。このエラーがどこか特定するのが難しいので公式の方をやる方向にしようと思っています。

    キャンセル

  • 2018/07/26 13:32

    公式のトップにある Install から MacOSを選択すれば記載ありますよ。
    https://www.tensorflow.org/install/install_mac

    こんなに分かりやすいものを見落とすことはちょっと考えにくいので、もしかすると既にトライされてダメだったのかも知れませんね。
    その場合は、そのトライされた内容と何がうまく行かなかったか質問された方がよいと思います。
    私自身はTensorflowを使ったことはないので回答できないかも知れませんが、Tensorflow自身のビルド経験者より使用経験者の方が圧倒的に多い筈ですから、回答頂ける可能性が高くなると思います。

    キャンセル

  • 2018/07/26 17:44

    あーっとTensorFlow Python であればインストール済みです。C++からAPIの利用になると共有ライブラリを生成するためにビルドが必要みたいです。
    参考にしたC++のソースコードが悪かったみたいで他のソースコードを参考にしたところすんなりとビルドすることに成功しました!新たにグラフ読み込みの部分でエラーが出ましたがとりあえず前に進めたのでよかったです。ありがとうございました!

    キャンセル

+1

soファイルを作成した後に何故ヘッダーファイルを集めているのか分かりません。一体soファイルは何をしているのでしょうか?

まず、誤解を恐れずに言うなら、.so = .dylib = .dll です。
動的にリンク可能なライブラリを指しています。
Linux(Mac上のHomeBrewでインストールしたGCCやLLVMなどもそうかな?識者のヘルプ求む)で使用するなら、.so。
Macのネイティブアプリであれば.dylib。Windowsなら.dllといった感じです。

集めたヘッダーファイルとの関係はどういうものなのでしょうか?

プログラムからライブラリを使用する際、そのライブラリに何が入っているのかを宣言する役割を担うのがヘッダファイルです。(これも若干乱暴な言い方ですが)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/26 17:44

    ありがとうございました!

    キャンセル

0

そのサイトにはVSCodeのことはでてきませんが、なにをさせたいんでしょうか

VSCodeは単なるテキストエディタです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • C++

    3781questions

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

  • Visual Studio

    2007questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • TensorFlow

    758questions

  • DLL

    90questions

    DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。