如何应对“intrin.h:没有这样的文件或目录”?

时间:2010-03-26 01:43:46

标签: c++ build-process eclipse-cdt

#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

有人可以提供帮助吗?

2 个答案:

答案 0 :(得分:9)

我有同样的问题。使用eclipse + cdt + mingw32-gcc7.2 + glm(openGL数学库) 我将#include <intrin.h>替换为#include <x86intrin.h>添加标记到gcc -msse2并且一切正常。

答案 1 :(得分:7)

这是一个标头,声明了一堆“内在函数” - 内置于编译器中的函数,因此它可以为它们发出内联代码。如果您使用VC ++作为编译器,它应该与其他标准头文件位于同一目录中。如果您使用的是其他编译器,则需要更改内在函数以适合您正在使用的编译器。例如,gcc具有许多类似的内在函数,但名称略有不同。

编辑:鉴于你正在使用MinGW(即,gcc),你几乎停留在移植代码(或使用VC ++)。如果你正在处理相当少量的代码,一种方法是注释掉包含该头的行,并尝试编译它。编译器将指出gcc没有使用内部函数的错误。然后你可以查看它们(例如,在MSDN上)并尝试找到gcc确实提供的东西(足够接近)同样的东西。取决于它使用的内容(以及多少)可以快速简便,或者可以更容易地开始生成新代码来执行相同的操作。

你发现的*内在头文件(可能)包含你需要替换的(至少某些)gcc与微软的对应物的声明。你可能最终会在移植代码的过程中使用它们,所以不要忘记它们。同时,只是包括那些标题而不是微软的标题几乎肯定不会使代码工作。