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

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

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

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

C++

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

Q&A

1回答

6059閲覧

SLAMをWindowsで動かすために、描画ライブラリPangolinをビルドしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Studio

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

C++

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

0グッド

0クリップ

投稿2017/11/15 07:10

###前提・実現したいこと
ORB-SLAM2 をWindows10に導入するにあたり、
描画ライブラリ Pangolin を入れたい。

###導入手順
(1)PangolinをC:\lib\Pangolin に解凍

(2)CMake
バージョン : 3.10.0
Specify generator for this project に Visual Studio 12 2013 Win64
を指定して、Configure & Generate → 成功

(3)Visual Studio
生成された C:\lib\Pangolin\build\Pangolin.sln を起動
ALL_BUILDをReleaseモードでビルド

###発生している問題・エラーメッセージ
pangolinにエラーが発生(抜粋)

6> depthsense.cpp 6>C:\lib\Pangolin\include\pangolin/gl/glsl.h(205): error C2065: 'thread_local' : 定義されていない識別子です。 6>C:\lib\Pangolin\include\pangolin/gl/glsl.h(205): error C2146: 構文エラー : ';' が、識別子 'GlSlUtilities' の前に必要です。 6>C:\lib\Pangolin\include\pangolin/gl/glsl.h(205): error C2146: 構文エラー : ';' が、識別子 'instance' の前に必要です。 6>C:\lib\Pangolin\include\pangolin/gl/glsl.h(205): error C2275: 'pangolin::GlSlUtilities' : この型は演算子として使用できません 6>C:\lib\Pangolin\include\pangolin/gl/glsl.h(205): error C2065: 'instance' : 定義されていない識別子です。 6>C:\lib\Pangolin\include\pangolin/gl/glsl.h(206): error C2065: 'instance' : 定義されていない識別子です。 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSenseTypes.h(40): warning C4005: 'PRId64' : マクロが再定義されました。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\inttypes.h(126) : 'PRId64' の前の定義を確認してください 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSenseTypes.h(41): warning C4005: 'PRIi64' : マクロが再定義されました。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\inttypes.h(132) : 'PRIi64' の前の定義を確認してください 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSenseTypes.h(42): warning C4005: 'PRIu64' : マクロが再定義されました。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\inttypes.h(144) : 'PRIu64' の前の定義を確認してください 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSenseTypes.h(43): warning C4005: 'PRIx64' : マクロが再定義されました。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\inttypes.h(150) : 'PRIx64' の前の定義を確認してください 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSenseTypes.h(46): warning C4005: 'INT64_C' : マクロが再定義されました。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\stdint.h(129) : 'INT64_C' の前の定義を確認してください 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSenseTypes.h(47): warning C4005: 'UINT64_C' : マクロが再定義されました。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\stdint.h(134) : 'UINT64_C' の前の定義を確認してください 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSense-public.hxx(632): warning C4275: DLL インターフェイスではない class 'std::exception' が DLL インターフェイスのベースになる class 'DepthSense::Exception' として使われています。 6>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\exception(90) : 'std::exception' の宣言を確認してください。 6>C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\include\DepthSense-public.hxx(631) : 'DepthSense::Exception' の宣言を確認してください。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(55): error C2061: 構文エラー : 識別子 'ImageDim' 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(92): error C2146: 構文エラー : ';' が、識別子 'dim' の前に必要です。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(92): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(142): error C2061: 構文エラー : 識別子 'ImageDim' 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(70): error C2511: 'pangolin::DepthSenseVideo *pangolin::DepthSenseContext::GetDepthSenseVideo(size_t,pangolin::DepthSenseSensorType,pangolin::DepthSenseSensorType,pangolin::ImageDim,pangolin::ImageDim,unsigned int,unsigned int,const pangolin::Uri &)' : オーバーロードされたメンバー関数が 'pangolin::DepthSenseContext' にありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(135) : 'pangolin::DepthSenseContext' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(71): error C2597: 静的でないメンバー 'pangolin::DepthSenseContext::running_devices' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(71): error C3867: 'pangolin::DepthSenseContext::running_devices': 関数呼び出しには引数リストがありません。メンバーへのポインターを作成するために '&pangolin::DepthSenseContext::running_devices' を使用してください 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(73): error C2597: 静的でないメンバー 'pangolin::DepthSenseContext::g_context' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(77): error C2228: '.getDevices' の左側はクラス、構造体、共用体でなければなりません 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(81): error C2661: 'pangolin::DepthSenseVideo::DepthSenseVideo' : 8 個の引数を伴うオーバーロードされた関数はありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(124): error C2511: 'pangolin::DepthSenseVideo::DepthSenseVideo(DepthSense::Device,pangolin::DepthSenseSensorType,pangolin::DepthSenseSensorType,pangolin::ImageDim,pangolin::ImageDim,unsigned int,unsigned int,const pangolin::Uri &)' : オーバーロードされたメンバー関数が 'pangolin::DepthSenseVideo' にありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(51) : 'pangolin::DepthSenseVideo' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(126): error C2550: 'pangolin::DepthSenseVideo::{ctor}' : コンストラクターの初期化子リストはコンストラクターの定義だけに許されます。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(127): error C2597: 静的でないメンバー 'pangolin::DepthSenseVideo::frame_properties' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(127): error C3867: 'pangolin::DepthSenseVideo::frame_properties': 関数呼び出しには引数リストがありません。メンバーへのポインターを作成するために '&pangolin::DepthSenseVideo::frame_properties' を使用してください 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(127): error C2597: 静的でないメンバー 'pangolin::DepthSenseVideo::streams_properties' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(128): error C2597: 静的でないメンバー 'pangolin::DepthSenseVideo::streams_properties' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(129): error C2227: '->get' : 左側がクラス、構造体、共用体、ジェネリック型へのポインターではありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(129): error C2059: 構文エラー : ')' 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(131): error C2597: 静的でないメンバー 'pangolin::DepthSenseVideo::sensorConfig' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(131): error C3867: 'pangolin::DepthSenseVideo::sensorConfig': 関数呼び出しには引数リストがありません。メンバーへのポインターを作成するために '&pangolin::DepthSenseVideo::sensorConfig' を使用してください 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(131): error C2109: 配列または、ポインターでない変数に添字が使われました。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(132): error C2597: 静的でないメンバー 'pangolin::DepthSenseVideo::sensorConfig' への参照が正しくありません。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(132): error C3867: 'pangolin::DepthSenseVideo::sensorConfig': 関数呼び出しには引数リストがありません。メンバーへのポインターを作成するために '&pangolin::DepthSenseVideo::sensorConfig' を使用してください 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(132): error C2109: 配列または、ポインターでない変数に添字が使われました。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(133): error C2352: 'pangolin::DepthSenseVideo::ConfigureNodes' : 静的でないメンバー関数の呼び出しが正しくありません 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(97) : 'pangolin::DepthSenseVideo::ConfigureNodes' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(367): error C2039: 'dim' : 'pangolin::DepthSenseVideo::SensorConfig' のメンバーではありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(90) : 'pangolin::DepthSenseVideo::SensorConfig' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(381): error C2039: 'dim' : 'pangolin::DepthSenseVideo::SensorConfig' のメンバーではありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(90) : 'pangolin::DepthSenseVideo::SensorConfig' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(381): error C2228: '.x' の左側はクラス、構造体、共用体でなければなりません 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(382): error C2039: 'dim' : 'pangolin::DepthSenseVideo::SensorConfig' のメンバーではありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(90) : 'pangolin::DepthSenseVideo::SensorConfig' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(382): error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(402): error C2039: 'dim' : 'pangolin::DepthSenseVideo::SensorConfig' のメンバーではありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(90) : 'pangolin::DepthSenseVideo::SensorConfig' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(417): error C2039: 'dim' : 'pangolin::DepthSenseVideo::SensorConfig' のメンバーではありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(90) : 'pangolin::DepthSenseVideo::SensorConfig' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(417): error C2228: '.x' の左側はクラス、構造体、共用体でなければなりません 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(418): error C2039: 'dim' : 'pangolin::DepthSenseVideo::SensorConfig' のメンバーではありません。 6>C:\lib\Pangolin\include\pangolin/video/drivers/depthsense.h(90) : 'pangolin::DepthSenseVideo::SensorConfig' の宣言を確認してください。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(418): error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(442): warning C4244: '=' : 'uint64_t' から 'double' への変換です。データが失われる可能性があります。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(502): warning C4244: '=' : 'uint64_t' から 'double' への変換です。データが失われる可能性があります。 6>C:\lib\Pangolin\src\video\drivers\depthsense.cpp(648): error C2660: 'pangolin::DepthSenseContext::GetDepthSenseVideo' : 関数に 8 個の引数を指定できません。

###エラー発生源のソースコード
C:\lib\Pangolin\src\video\drivers\depthsense.cpp
stevenlovegrove/Pangolin/~/depthsense.cpp - GitHub

自分ではソースコードやCMakeの参照値は変更していません。
SLAMの実装に詳しい方がいらっしゃいましたら、考えられる原因をご指摘いただけたらと思います。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

こんにちは。

最初のエラーにでている thread_local はスレッド・ローカル・ストレージの指定です。
thread_local というキーワードで指定できるようになったのは、Visual C++ 2015以降のようです。

PangolinはC++11が必須と書かれていましたので、C++11対応度の低いVisual C++ 2013では無理なのかも知れません。Visual C++ 2015以降ならC++11対応と言って良いようです。

投稿2017/11/15 07:27

Chironian

総合スコア23272

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

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

退会済みユーザー

退会済みユーザー

2017/11/21 07:39

回答ありがとうございます。Visual Studio 2017でビルドしたところ、thread_localに関するエラーは消えたのですが、以降のdepthsense.cppに関するエラーが解決できません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問