Компиляция C prog winth unix файлов заголовков файлов в Windows - PullRequest
0 голосов
/ 14 апреля 2011

ну, у меня есть несколько исходных и заголовочных файлов Cpp, а в заголовочных файлах есть операторы include в форме,

#include<include/config.h>
#include<include/controls.h>

дело в том, что я использую gcc на windows и он говорит, что нет такого файла или каталогапоскольку у путей в стиле Windows есть '/', а не '\',

, поэтому я изменил путь на include \ config.h, но, опять же, проблема заключается в том, что в config.h есть много заголовочных файлов, включенных вместе сПодобный стиль пути Unix, и не представляется возможным изменить пути во всех заголовочных файлах, потому что это библиотека и есть сотни таких заголовков, есть ли способ скомпилировать это с помощью GCC (minGW) ??

Спасибо:)

это может звучать глупо, извините, если это так! ..

Ответы [ 4 ]

2 голосов
/ 14 апреля 2011

Я не думаю, что направление / является проблемой здесь. Windows должна конвертировать между ними для вас, когда вы вызываете свой API именно для целей (некоторой) совместимости с Unix.

Я думаю, что проблема заключается в пути включения. Попробуйте скомпилировать вашу программу с

gcc -o output.exe -I"c:\path\to\directory\above\include" file.c

Чтобы в каталоге, указанном вами с помощью флага включения, находился подкаталог «include», содержащий ваши заголовки. Это предполагает, что все ваши пути в других заголовках относятся к этому.

0 голосов
/ 14 апреля 2011

Хорошее обсуждение вашей проблемы можно увидеть здесь:

Как создать независимый от ОС путь в c ++

0 голосов
/ 14 апреля 2011

Не меняйте косую черту / на обратную косую черту \ - вы заставляете компилятор интерпретировать следующий символ как специальный символ \c. У GCC нет проблем с путями в стиле UNIX в Windows. Проблема, вероятно, заключается в отсутствии директивы -I для компилятора - что-то вроде -I. для поиска файлов в текущих и подкаталогах.

0 голосов
/ 14 апреля 2011

config.h и controls.h не являются стандартными заголовочными файлами. Попробуйте вместо этого:

#include "include/config.h"
#include "include/controls.h"

Еще лучше было бы использовать командную строку для указания каталога включения и использовать

#include "config.h"
#include "controls.h"

Вероятно, mingw использует ту же опцию, что и все другие компиляторы c: (compiler name) -I(directory name) ...

Как уже говорили другие, / против \ не является проблемой. Даже компиляторы и утилиты Microsoft везде принимают /. Использование \ является исторической ошибкой, совершенной без необходимости.

...