スポンサーリンク

WindowsでOpen3D 0.18.0 に更新した

古いOpen3D( 0.9.0.0 )について

VC++のC++言語標準をISO C++ 20に設定したところ、以下のエラーが出た。

1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(441,25): error C2039: 'result_of': 'std' のメンバーではありません
1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(441,34): error C2059: 構文エラー: '<'
1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(441,39): error C2039: 'type': '`global namespace'' のメンバーではありません
1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(441,49): error C2238: ';' の前に無効なトークンがあります。
1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(442,31): error C2065: 'type1': 定義されていない識別子です。
1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(442,20): error C2923: 'Eigen::internal::remove_all': 'type1' は、パラメーター 'T' の有効な テンプレート 型引数ではありません
1>Open3D\3rdparty\Eigen\Eigen\src\Core\util\Meta.h(442,39): error C2955: 'Eigen::internal::remove_all': クラス テンプレート を使用するには テンプレート 引数リストが必要です
1>Open3D\3rdparty\Eigen\Eigen\src\Core\CwiseBinaryOp.h(155,22): error C2976: 'Eigen::internal::generic_xpr_base': 引数 テンプレート が少なすぎます
1>Open3D\3rdparty\Eigen\Eigen\src\Core\CwiseUnaryOp.h(95,22): error C2976: 'Eigen::internal::generic_xpr_base': 引数 テンプレート が少なすぎます
1>Open3D\Geometry\VoxelGrid.h(120,37): error C1903: 直前のエラーを修復できません。コンパイルを中止します。

Open3DConfig.h を確認してみると、バージョン 0.9.0.0だった。

#define OPEN3D_VERSION "0.9.0.0"

調べた限りまともな対処法がないので、Open3Dを最新版にする。

Open3D 0.18.0.0 のインストール

公式 https://www.open3d.org/ の下のほうへ行き、0.18.0を選択する。

展開してC++20で使用。

そのままだとC4996が出るので、#pragma warning(disalbe:4996) を入れる。

あるいは

_SILENCE_CXX20_IS_POD_DEPRECATION_WARNING
_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING

を定義する。

open3d\core\Tensor.h(65,19): error C4996: 'std::is_pod<int64_t>': warning STL4025: std::is_pod and std::is_pod_v are deprecated in C++20. The std::is_trivially_copyable and/or std::is_standard_layout traits likely suit your use case. You can define _SILENCE_CXX20_IS_POD_DEPRECATION_WARNING or _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS to suppress this warning.
#pragma warning(disable:4996)

#if defined(_DEBUG)
#pragma comment(lib,"C:\\libraries\\Open3D-0.18.0\\debug\\lib\\Open3D.lib")
#else
#pragma comment(lib,"C:\\libraries\\Open3D-0.18.0\\release\\lib\\Open3D.lib")
#endif

#include <Open3D/Open3D.h>

#include <iostream>

int main()
{
  std::string filename = "bunny.ply";
  auto mesh = open3d::io::CreateMeshFromFile(filename);
  auto pcd = open3d::io::CreatePointCloudFromFile(filename);
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: