2010-03-26 16 views
11
#include <intrin.h> 

Powyższy zgłosi:Jak radzić sobie z "intrin.h: Brak takiego pliku lub katalogu"?

intrin.h: No such file or directory 

który wydaje się być plikiem nagłówek MSVC, ale używam Eclipse CDT, w jaki sposób mogę to zrobić dostępna jest tam niektóre biblioteki potrzebne?

CDT używa MinGW do kompilacji, ale nie ma 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 

Czy ktoś może pomóc?

+0

Używasz GCC 3.4.5. Byłoby to mądre, aby zaktualizować, ponieważ to po prostu zbyt stary, aby być przydatne ... – rubenvb

Odpowiedz

7

To jest nagłówek, który deklaruje garść "wewnętrznych elementów" - funkcji, które są wbudowane w kompilator, aby mógł emitować dla nich kod śródliniowy. Jeśli używasz VC++ jako kompilatora, powinien on znajdować się w tym samym katalogu, co inne standardowe nagłówki. Jeśli używasz innego kompilatora, musisz zmienić wewnętrzne tak, aby odpowiadało używanemu kompilatorowi. Na przykład gcc ma wiele podobnych funkcji wewnętrznych, ale z nieco innymi nazwami.

Edytowanie: Biorąc pod uwagę, że używasz MinGW (tj. Gcc), jesteś prawie utknął z przeniesieniem kodu (lub używając VC++). Jeśli masz do czynienia z dość małą ilością kodu, jednym ze sposobów jest wykomentowanie linii zawierającej ten nagłówek i spróbuj ją skompilować. Kompilator wskaże błędy, w których zastosowano funkcje wewnętrzne, których nie ma w gcc. Następnie możesz je wyszukać (np. W witrynie MSDN) i spróbować znaleźć coś, co zapewnia gcc, które ma (wystarczająco blisko) tę samą rzecz. W zależności od tego, co używa (i ile) może być szybkie i łatwe, lub może być łatwiej zacząć od nowa, aby stworzyć ten sam kod.

* Wewnętrzne nagłówki, które znalazłeś (prawdopodobnie) będą zawierały deklaracje (przynajmniej niektórych) odpowiedników gcc firmy Microsoft, które musisz zastąpić. Prawdopodobnie wykorzystasz je do przeniesienia kodu, więc nie zapomnij o nich. W tym samym czasie włączenie tych nagłówków zamiast Microsoft prawie na pewno nie sprawi, że kod będzie działał.

+0

Ale używam eclipse-cdt :( – Mask

+0

Eclipse jest edytor/IDE.Kwestia jest tutaj, który kompilator używasz * z * Eclipse: –

+0

Używa łańcucha narzędziowego MinGW – Mask

6

Mam ten sam problem. za pomocą eclipse + cdt + mingw32-gcc7.2 + glm (openGL matematyka libraty) I zastąpić #include <intrin.h> z #include <x86intrin.h> dodać flagę do gcc -msse2 i wszystko działało.