使用windows中的unix样式头文件编译aC程序

时间:2011-04-14 16:24:07

标签: c gcc compilation mingw

我有几个Cpp源文件和头文件,并且头文件在表单中包含include语句,

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

事情就是我在Windows上使用gcc并且没有这样的文件或目录,因为windows样式路径有'/'而不是'\',

所以我改变了包含\ config.h的路径,但问题是config.h中包含许多头文件,其中包含类似的unix路径样式,并且不可能更改所有头文件中的路径cos它是一个库,有100个这样的标题,有没有办法用GCC编译这个(minGW)??

谢谢:)

这可能听起来像是一个愚蠢的问题,对不起,如果是!! ..

4 个答案:

答案 0 :(得分:2)

我认为/的方向不是问题所在。为了(某些)unix兼容性的目的,Windows在为其精确调用API时应该为您转换。

我认为问题是包含路径。尝试使用

编译您的程序
gcc -o output.exe -I"c:\path\to\directory\above\include" file.c

因此,在使用include标志指定的目录中,有一个包含标题的子目录“include”。这假设您的其他标题中的所有路径都与此相关。

答案 1 :(得分:0)

config.hcontrols.h不是标准的头文件。试试这个:

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

更好的方法是使用命令行指定include目录并使用

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

可能mingw使用与所有其他c编译器相同的选项:(compiler name) -I(directory name) ...

正如其他人所说,/\不是问题。甚至Microsoft编译器和实用程序也会在任何地方接受/\的使用是一个历史性的错误,不必要地发生。

答案 2 :(得分:0)

不要将正斜杠/更改为反斜杠\ - 您正在使编译器将下一个字符解释为特殊字符\c。 GCC在Windows上处理UNIX风格的路径没有问题。问题可能是编译器缺少-I指令 - 类似-I.来搜索当前和子目录中的文件。

答案 3 :(得分:0)

在这里可以看到关于你的问题的一个很好的讨论:

How to generate a OS independent path in c++