Как справиться с «intrin.h: нет такого файла или каталога»? - PullRequest
13 голосов
/ 26 марта 2010
#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 ]

9 голосов
/ 24 марта 2013

У меня такая же проблема. использование eclipse + cdt + mingw32-gcc7.2 + glm (математическая библиотека openGL) Я заменяю #include <intrin.h> на #include <x86intrin.h> добавляем флаг в gcc -msse2 и все работает.

7 голосов
/ 26 марта 2010

Это заголовок, который объявляет набор «встроенных функций» - функций, встроенных в компилятор, чтобы он мог генерировать встроенный код для них. Если вы используете VC ++ в качестве компилятора, он должен находиться в том же каталоге, что и другие стандартные заголовки. Если вы используете другой компилятор, вам необходимо изменить встроенные функции в соответствии с используемым компилятором. Например, в gcc много похожих функций, но с немного другими именами.

Редактировать: Учитывая, что вы используете MinGW (т.е. gcc), вы в значительной степени застряли с переносом кода (или с использованием VC ++). Если вы имеете дело с довольно небольшим количеством кода, один из способов сделать это - закомментировать строку, содержащую этот заголовок, и попытаться скомпилировать его. Компилятор укажет на ошибки, где использовались встроенные функции, которых нет у gcc. Затем вы можете просмотреть их (например, в MSDN) и попытаться найти что-то, что обеспечивает gcc и которое (достаточно близко) делает то же самое. В зависимости от того, что он использует (и сколько), это может быть быстро и легко, или может быть легче начать с создания нового кода, чтобы делать то же самое.

Найденные вами * встроенные заголовки будут (вероятно) содержать декларации (по крайней мере, некоторых) аналогов gcc для Microsoft, которые вам необходимо заменить. Вы, вероятно, в конечном итоге будете использовать их в процессе переноса кода, поэтому не забывайте о них. В то же время, даже включение этих заголовков вместо Microsoft почти наверняка не заставит код работать.

...