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

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

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

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

Visual Studio

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

C++

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

Q&A

解決済

3回答

798閲覧

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

_Victorique__

総合スコア1392

DLL

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

Visual Studio

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

C++

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

0グッド

0クリップ

投稿2018/07/25 07:57

編集2018/07/25 09:24

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/
こちらのサイトを参考にしました。
実際にファイルの変換というよりはリンク情報を保持したまま拡張子を変更しているようです。
正直よく分かっていないです。

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

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

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

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

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

kazto

2018/07/25 08:01

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

2018/07/25 08:02

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

回答3

0

ベストアンサー

こんにちは。

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

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

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

bazelを使わないで、自分のビルドシステムでmakeしたいときはどうすればいいんだろ。

なので調べてみました。

  1. Tensorflowをソースからビルドする

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

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

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

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

投稿2018/07/25 08:59

Chironian

総合スコア23272

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

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

_Victorique__

2018/07/25 09:23

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

2018/07/25 12:54

> file not found の件は、「ヘッダとライブラリを取り出して組み込む方針にしました。」の際にインクルード・ファイルの取り出しに失敗しているのだと思います。 公式に記載されている正規インストール方法でインストールしてもだめですか? 取り出したりせずにそのまま使うのが一番トラブルが少ない筈です。 > so → dylibに変換に関して ありがとうございます。tensorflowをMac上でビルドしたら、拡張子が .so で出来てしまうので、コピーついでに .dylib へ変更しているということみたいですね。なるほどです。
_Victorique__

2018/07/26 03:29

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

2018/07/26 04:32

公式のトップにある Install から MacOSを選択すれば記載ありますよ。 https://www.tensorflow.org/install/install_mac こんなに分かりやすいものを見落とすことはちょっと考えにくいので、もしかすると既にトライされてダメだったのかも知れませんね。 その場合は、そのトライされた内容と何がうまく行かなかったか質問された方がよいと思います。 私自身はTensorflowを使ったことはないので回答できないかも知れませんが、Tensorflow自身のビルド経験者より使用経験者の方が圧倒的に多い筈ですから、回答頂ける可能性が高くなると思います。
_Victorique__

2018/07/26 08:44

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

0

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

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

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

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

投稿2018/07/25 08:41

kazto

総合スコア7196

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

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

_Victorique__

2018/07/26 08:44

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

0

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

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

投稿2018/07/25 08:32

y_waiwai

総合スコア87715

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問