Ich versuche OpenImageIO für 64-bit Windows auf Fedora 26 mit MinGW zu kompilieren. Nachdem ich yum
verwendet habe, um die Mingw-Versionen der Abhängigkeiten abzurufen, habe ich mingw64-cmake
gefolgt von make
ausgeführt. Allerdings bekomme ich sofort einen Kompilierfehler über stdlib.h
nicht gefunden.
Ich habe bestätigt, dass stdlib.h
zumindest in /usr/include/
und in /usr/x86_64-w64-mingw32/sys-root/mingw/include/c++/
gefunden wird, wo sich auch die Datei befindet, die den Compilerfehler angibt.
Warum erhalte ich immer noch den Fehler stdlib.h: No such file or directory
?
Aktualisierung:
Ich habe weitere Recherchen durchgeführt und Folgendes gelernt: The preprocessor directive #include_next behaves like the #include directive, except that it specifically excludes the directory of the including file from the paths to be searched for the named file.
Dies würde erklären, warum cstdlib
stdlib.h
nicht im selben Ordner findet. Aber cstdlib
ist Teil von MinGW und nicht irgendein Teil des Codes, den ich zu kompilieren versuche. Ich habe also immer noch keine Ahnung, was hier falsch ist oder wie man diesen Fehler beheben kann.
Bearbeiten : Hier finden Sie die Informationen zur Compiler-Version für den Fall, dass sie nützlich ist: Ссылка . Dies ist eine Neuinstallation, also sollte dort nichts Ungewöhnliches sein.
Ich habe es gelöst, ich kann es erneut kompilieren.
Die Lösung (für mich) ist die Variable CPLUS_INCLUDE_PATH
zum Pfad hinzuzufügen und sie auf das MinGW C ++ - Include-Verzeichnis zu setzen, für mich: C:\MinGW\lib\gcc\mingw32.3.0\include\c++
.
Ich hoffe, es funktioniert auch für Sie.
Die Verwendung von #include_next
scheint auf der Grundlage meines Googelns viele Probleme zu verursachen. Versuchen Sie, stdlib.h
direkt einzubeziehen, indem Sie die folgende Syntax verwenden:
Diese Syntax wurde in gcc
6.0 hinzugefügt, um Probleme mit Bibliotheken von Drittanbietern zu beheben. Siehe hier für die Vorgehensweise und das Schließen.
Bearbeiten: Geänderte Antwort, um neue Informationen über gcc wrapper_headers und #include_next