gcc 如何编译 windows c c++代码

时间:2021-06-17 02:04:03
           有时候出于某种需要,需要写点windows下的c代码,调用一些windows下的api,但我又不愿意装vc或visual studio,只想使用gcc来编译运行那些代码(平常很少写这些代码,而且这些c代码一般就一个文件,所以就不想装那么笨重的东西。另外装了cygwin就有gcc)。如果 c代码都只是调用标准库的api,gcc是可以的,但是如果调用了windows特有的api,就编译不过了,不知道是不是我没设置链接库路径还是其他原因,望高手解答。
         比如下面的代码,只是想创建一个notepad进程,gcc就编译不过了

#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
  
 printf("123");
 STARTUPINFO si = {sizeof(si)};
 PROCESS_INFORMATION pi;
 TCHAR cmd[] = TEXT("NOTEPAD");
 printf("before\n");
 CreateProcess(NULL,cmd,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
 printf("after\n");
         getchar(); 
return 0;
}

15 个解决方案

#1


没有必要那么洁癖,装个VS不会死人的。

#2


window的api能用gcc编译码?

#3


同二楼,能这么干吗?我还真不清楚,楼主要是知道了能否在帖子中说一下,
其实装个VC不难啊,也用不了多长时间吧

#4


如果你用的 MinGW 就可以编译一部分Windows API,要使用编译选项 -mwindows

#5


引用 3 楼 u012421456 的回复:
同二楼,能这么干吗?我还真不清楚,楼主要是知道了能否在帖子中说一下,
其实装个VC不难啊,也用不了多长时间吧
我就想这么干啊,装个vs占用那么多空间,太笨重,我要装的话也不必发帖了,要是解决了肯定贴出来分享给大家

#6


引用 2 楼 champ4077 的回复:
window的api能用gcc编译码?
这个我不知道呀,所以问问有没大神懂,要真能编译就太好了

#7


我原来以为需要加个命令行参数 比如 -I, -L之类的,至于加哪些库 我就不知道了 而且加了之后也不知有没有用

#8


gcc是C编译器它会识别.c扩展名的程序文件, g++才是C++编译器,识别.cpp扩展名的文件

#9


改代码。。。

#10


楼主de小问题:
1)类似于stdafx.h是用于MFC的,MFC你不装VC是无法使用的,不要使用MFC/ATL组件的东东,甚至包括一些宏如  _T
2)如果只是Windows的API,完全没问题,链接几个库比如 user32.lib gdi32.lib kenel32.lib 等,按需链接,不必全上

cygwin或者mingw已经提供了对Windows基础API的支持(除非组件缺了,一般情况都有)

#11


估计前面有些朋友只用过VC写Windows程序,其实可以的

#12


int _tmain(int argc, _TCHAR* argv[])

这里main的原型请用标准方式写,因为你用的不是VC+MFC,gcc/g++跟它不熟
涉及字符串的宏只应使用Windows标准头文件中定义的,是哪些请叩问MSDN,简单程序就采用最简单的字符串,不要用宏包起来

#13


这么蛋疼的代码,还是vs编译好,在wine下运行好了。

你这不是跨平台的代码。也不是linux的代码,所以gcc不能编译过的。

#14


Code Block ,可以试试这个IDE,自带GCC编译器,也可以选择安装好的其他编译器。这个软件不大,轻量型,我一直用,很方便,不像VS那么臃肿。
官网http://www.codeblocks.org/

自虐点的也可以用Eclipse,200M左右。

据说Notepad++也可以编译C++,不过一直没有去实践过。

#15


http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express
点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装

#1


没有必要那么洁癖,装个VS不会死人的。

#2


window的api能用gcc编译码?

#3


同二楼,能这么干吗?我还真不清楚,楼主要是知道了能否在帖子中说一下,
其实装个VC不难啊,也用不了多长时间吧

#4


如果你用的 MinGW 就可以编译一部分Windows API,要使用编译选项 -mwindows

#5


引用 3 楼 u012421456 的回复:
同二楼,能这么干吗?我还真不清楚,楼主要是知道了能否在帖子中说一下,
其实装个VC不难啊,也用不了多长时间吧
我就想这么干啊,装个vs占用那么多空间,太笨重,我要装的话也不必发帖了,要是解决了肯定贴出来分享给大家

#6


引用 2 楼 champ4077 的回复:
window的api能用gcc编译码?
这个我不知道呀,所以问问有没大神懂,要真能编译就太好了

#7


我原来以为需要加个命令行参数 比如 -I, -L之类的,至于加哪些库 我就不知道了 而且加了之后也不知有没有用

#8


gcc是C编译器它会识别.c扩展名的程序文件, g++才是C++编译器,识别.cpp扩展名的文件

#9


改代码。。。

#10


楼主de小问题:
1)类似于stdafx.h是用于MFC的,MFC你不装VC是无法使用的,不要使用MFC/ATL组件的东东,甚至包括一些宏如  _T
2)如果只是Windows的API,完全没问题,链接几个库比如 user32.lib gdi32.lib kenel32.lib 等,按需链接,不必全上

cygwin或者mingw已经提供了对Windows基础API的支持(除非组件缺了,一般情况都有)

#11


估计前面有些朋友只用过VC写Windows程序,其实可以的

#12


int _tmain(int argc, _TCHAR* argv[])

这里main的原型请用标准方式写,因为你用的不是VC+MFC,gcc/g++跟它不熟
涉及字符串的宏只应使用Windows标准头文件中定义的,是哪些请叩问MSDN,简单程序就采用最简单的字符串,不要用宏包起来

#13


这么蛋疼的代码,还是vs编译好,在wine下运行好了。

你这不是跨平台的代码。也不是linux的代码,所以gcc不能编译过的。

#14


Code Block ,可以试试这个IDE,自带GCC编译器,也可以选择安装好的其他编译器。这个软件不大,轻量型,我一直用,很方便,不像VS那么臃肿。
官网http://www.codeblocks.org/

自虐点的也可以用Eclipse,200M左右。

据说Notepad++也可以编译C++,不过一直没有去实践过。

#15


http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express
点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装