1

現在、win7 32 ビット OS で Visual C++ 10.0(2010) を使用しています。

libigl githubチュートリアルの基本的な例をビルドしようとしたとき: libigl チュートリアル

次のインストール コードは正常に動作します。

#include <igl/cotmatrix.h>
#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <iostream>
int main()
{
  Eigen::MatrixXd V(4,2);
  V<<0,0,
     1,0,
     1,1,
     0,1;
  Eigen::MatrixXi F(2,3);
  F<<0,1,2,
     0,2,3;
  Eigen::SparseMatrix<double> L;
  igl::cotmatrix(V,F,L);
  std::cout<<"Hello, mesh: "<<std::endl<<L*V<<std::endl;
  return 0;
}

これは、チュートリアルごとに基本的に問題がないことを示しています。

ただし、次の方法でチュートリアル 102を取得できません。

#include <igl/readOFF.h>
#include <igl/viewer/Viewer.h>

Eigen::MatrixXd V;
Eigen::MatrixXi F;

int main(int argc, char *argv[])
{
  // Load a mesh in OFF format
  igl::readOFF("../shared/bunny.off", V, F);

  // Plot the mesh
  igl::viewer::Viewer viewer;
  viewer.data.set_mesh(V, F);
  viewer.launch();
}

いくつかの特別なヘッダーが見つからないという一連のビルド エラー メッセージを取得し、ヘッダーを含む対応するディレクトリを VS のインクルード ディレクトリに追加した後、コンピューターで見つからないヘッダーがまだいくつかあります。

チュートリアルごとに必要なインクルード ディレクトリを除きます。

x:\Program\libigl-master\include; $(IncludePath);

私はすでに次のように他の人を追加しました:

x:\Program\libigl-master\external\glfw\include;
x:\Program\libigl-master\external\AntTweakBar\src;
x:\Program\libigl-master\external\AntTweakBar\include;
x:\Program\libigl-master\external\glew\include;

エラーメッセージはまだあります:

x:\Program\libigl-master\external\glfw\include\glfw\glfw3.h(163): 致命的なエラー C1083: インクルード ファイルを開けません: 'GL/glcorearb.h': そのようなファイルまたはディレクトリはありません 1>

だから私は追加しました:

x:\Program\libigl-master\external\glfw\include\GLFW
D:\Program\libigl-master\external\glfw\include\

そして得た:

x:\program\libigl-master\external\glfw\include\glfw\glfw3.h(163): 致命的なエラー C1083: インクルード ファイルを開けません: 'GL/glcorearb.h': そのようなファイルまたはディレクトリはありません

私のコンピューターには存在しません。

私は何をすべきか?

4

3 に答える 3

1

私はまったく同じ問題を抱えていました。問題は、インクルードパスを追加するだけでは機能しないということです-彼らが言ったように。これは、LIBIGL 自体が 3D 形状の操作を支援するための補助ライブラリに過ぎないためですが、それらの例ではそれ以上のものを使用しています (マトリックス システムは Eigen から来ており、グラフィカル システムはGLFW+GLEWなどを使用しています)。

しかし、基本的なライブラリをセットアップする MSVS で動作するほとんどの例を取得できます。以下をダウンロードします。

  1. Eigen : これは、基本的な行列/ベクトル演算などに使用されます。
  2. GLFW : これは、OpenGL のウィンドウを作成および処理するために使用されます。
  3. GLEW : このライブラリには、OpenGL 関数を使用するための実際の OpenGL 関数バインディングがあります。

これらのライブラリは、例をコンパイルするために不可欠であることに注意してください。これは、例が作成されたときに、作成者がそれらを使用して環境をセットアップしていたためです (そうしないと、OpenGL および Windows/Linux ウィンドウの処理などを手動でコーディングする必要があります。興味のある方は、これが「純粋な OpenGL」コードの外観です)。したがって、これらのライブラリの環境を設定する必要があります。これを行う方法は次のとおりです。

MSVS で空のプロジェクトを作成した後、ソリューション エクスプローラーに移動し、プロジェクトを右クリックして [プロパティ] をクリックします。すべてのプロジェクト構成が行われるプロパティ ページを開きました。コンパイラがヘッダーを見つけることができる場所、使用しているライブラリ、およびこれらのライブラリを見つけることができる場所の 3 つを指定する必要があります。

最初にヘッダーを設定します。左側のメニューでC/C++ > Generalを展開し、右側でAdditional Include Directoriesを選択し、下矢印をクリックして edit をクリックします。空のフィールドが表示されたウィンドウが開きます。フィールドを2 回クリックしてアイテムを追加します。各行に eigen ヘッダー パス、libigl フォルダー パス、glew フォルダー パス、glfw フォルダー パスを追加します (これは非常に紛らわしいインターフェイスです)。

さて、使用するライブラリを指定する必要があります。再び、左側のメニューで、[リンカー] > [入力] > [追加の依存関係] (ほぼ同じ種類のインターフェイス) に移動します。glew32s.libglfw3.lib、およびopengl32.libを追加します(各行に 1 つ)。最後に、それらのライブラリの場所を指定します。Linker > General > Additional Library Directoriesに移動し、ダウンロードした glew32s.lib と glfw3.lib のパスを指定します。( "C:\Users...\glfw-3.2.1.bin.WIN32\lib-vc2010" のようなもの) - 正しいコンパイラへのパスを指定していることを確認してください - たとえば、MSVS を使用している場合32 ビット 2010 では、mingw-64 ではなく vc2010 を選択する必要があります。

チュートリアル 2012 ソース コードを使用してプロジェクト内にソース ファイルを作成すると、コンパイルされるはずですが、OpenGL32.dll などの dll へのパスを指定する必要がある場合があります (システム パスにない場合)。

最後に、失敗する可能性のある最後の 1 つのことは、Runtime Libraryと呼ばれるものに関係しています。これはC/C++ > Code Generation > Runtime Libraryにあります。基本的にはコードをコンパイルする方法を説明しており、使用している各ライブラリは異なるライブラリを使用してコンパイルされているため、エラーが発生する可能性があります... 正直なところ、それについてはあまり知りません。デフォルトのもので動作していたので、/MDに変更すると動作しました。図に行きます。

PS: OpenGL を機能させるには、グラフィック カードを更新する必要があるかもしれません。

于 2016-10-17T03:24:19.073 に答える
0

Visual Studio 2013 でも同じ問題が発生しました。使用しようとしていた head ファイルは、開くことができない igl/sort.h でした。

チュートリアルで、彼らは言った

libigl/include をインクルード パスに追加し、関連するヘッダーをインクルードするだけです。

そして、彼らがここで参照していたインクルード パスは、実際には、追加のインクルード ディレクトリではなく、プロジェクト > プロパティ > 構成プロパティ > VC++ ディレクトリの下にあるインクルード ディレクトリです。

于 2016-08-05T08:17:01.587 に答える