gcc/g++的一些问题
mingw吧
全部回复
仅看楼主
level 3
_Nomobuyo_ 楼主
gcc/g++的一些问题
2019年08月20日 12点08分 1
level 3
_Nomobuyo_ 楼主
前几天楼主看到mingw里面有windows.h头文件,想着用mingw编译win32窗体
代码如下
2019年08月20日 12点08分 2
level 3
_Nomobuyo_ 楼主
写完之后在终端敲
g++ test.c -o test
报错:undefined reference to `GetStockObject@4'
然后我去百度了一下,了解了大概是缺少gdi32.lib,而且出问题的都是用的msvc,然后无知的我去网上找了一个gdi32.lib跟源文件放在一起,命令后面手动加了-lgdi32.lib,好像报错无法解析的符号,我才有点醒悟msvc的静态库是不能被mingw所用的,用nm gdi32.lib果然也无法解析
2019年08月20日 12点08分 3
level 3
_Nomobuyo_ 楼主
到了第二天,我突发奇想去更新了一下mingw,然后顺手看了看lib文件夹,发现有libgdi32.a!!
赶紧去昨天的源文件目录,敲命令
g++ test.c -o test -lgdi32
然后居然编译成功了,双击.exe能弹出窗口,(很兴奋
2019年08月20日 12点08分 4
level 3
_Nomobuyo_ 楼主
现在在想,mingw自带的库像stdio stdlib这些头文件里的函数不都是自动找链接库的吗,为什么这个gdi32要手动链接才行呢
2019年08月20日 12点08分 5
level 3
_Nomobuyo_ 楼主
还有个问题,现在编译出的exe文件弹出窗口外还有个cmd窗口,怎么才能不弹出cmd窗口呢
2019年08月20日 12点08分 6
level 10
mingw本身就带有windows相关的库,而且这个库众多,所以不会像使用C标准库一样,只对应一个msvcrt这样的库,如果你不想手动输入gdi32这些基本常用windows库,可以使用-mwindows这个编译选项:
g++ -mwindows -o first.exe main.cpp,
链结器会帮你链入libkernel.a, libuser32.a, libgdi32.a。。。等等常用库,但如果你使用了这些库外的函数,
依然需要手动输入链结库的名字。
2019年08月21日 02点08分 7
懂了[小乖]
2019年08月21日 04点08分
多谢大佬
2019年08月21日 04点08分
level 13
github上有现成winapi入门源代码,通常自带makefile.运行一下就会看到编译命令。gcc参数挺多的[勉强]
2019年08月21日 05点08分 8
[笑尿]winapi大写字母有点多,看起来好不习惯
2019年08月22日 11点08分
1