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

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

ただいまの
回答率

90.76%

  • C++

    3239questions

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

  • Visual Studio

    1693questions

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

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

受付中

回答 1

投稿

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

kotatanaka

score 2

前提・実現したいこと

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の実装に詳しい方がいらっしゃいましたら、考えられる原因をご指摘いただけたらと思います。
よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

0

こんにちは。

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

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/11/21 16:39

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

    キャンセル

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • C++

    3239questions

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

  • Visual Studio

    1693questions

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