web-dev-qa-db-ja.com

「intrin.h:そのようなファイルやディレクトリはありません」に対処するにはどうすればよいですか?

#include <intrin.h>

上記は報告します:

intrin.h: No such file or directory

これはMSVCヘッダーファイルのようですが、Eclipse cdtを使用していますが、どうすれば利用できるようになりますか?必要なライブラリはありますか?

cdtはコンパイルにMinGWを使用しますが、intrin.hはありません。

D:\Tools\MinGW\lib\gcc\mingw32\3.4.5\include>dir *intrin.h

2006-01-17  21:47            34,528 emmintrin.h
2006-01-17  21:47            22,281 mmintrin.h
2006-01-17  21:47             3,586 pmmintrin.h
2006-01-17  21:47            30,925 xmmintrin.h

誰か助けてくれる人はいますか?

14
Mask

私も同じ問題を抱えています。 Eclipse + cdt + mingw32-gcc7.2 + glm(openGL math libraty)を使用して#include <intrin.h>#include <x86intrin.h>に置き換えてgcc-msse2にフラグを追加するとすべて機能しました。

9
leanid.chaika

これは、一連の「組み込み関数」を宣言するヘッダーです。これは、コンパイラーに組み込まれているため、インラインコードを出力できる関数です。コンパイラとしてVC++を使用している場合は、他の標準ヘッダーと同じディレクトリにある必要があります。別のコンパイラを使用している場合は、使用しているコンパイラに合わせて組み込み関数を変更する必要があります。たとえば、gccには多くの類似した組み込み関数がありますが、名前が少し異なります。

編集:MinGW(つまり、gcc)を使用していることを考えると、コードの移植(またはVC++の使用)にかなり悩まされています。かなり少量のコードを扱っている場合、そのための1つの方法は、そのヘッダーを含む行をコメントアウトして、コンパイルを試みることです。コンパイラーは、gccにはない組み込み関数が使用されたエラーを指摘します。次に、それらを調べて(たとえば、MSDNで)、gccが提供するもので、同じことを(十分に近い)ものを見つけようとします。使用するもの(および使用量)に応じて、すばやく簡単に実行できる場合もあれば、同じことを行うために新しいコードの作成をやり直す方が簡単な場合もあります。

あなたが見つけた* intrinsicヘッダーには、(おそらく)あなたが置き換える必要のあるMicrosoftのものに対応するgcc(の少なくともいくつか)の宣言が含まれています。コードを移植する過程でそれらを使用することになる可能性があるので、それらを忘れないでください。同時に、Microsoftの代わりにこれらのヘッダーを含めるだけでは、コードが機能することはほぼ確実ではありません。

7
Jerry Coffin