在Windows上使用g++进行构建的帮助

3

有一个小型的C++项目(其中包含win32代码),我需要构建它。它已经有了自己的Makefile。我被告知要使用MinGW,但我以前从未使用过。我下载并安装了最新的MinGW安装程序。

然后,我打开了MinGW shell,并输入make命令。exe文件被创建了。但是当我尝试运行它时,会提示缺少libgcc_s_dw2-1.dll!为什么会出现这个错误呢?难道exe不应该是自包含的,可以在任何地方运行吗?

更新:
下面是来自Makefile的更多信息:

CC = g++ 
CCOPTIONS=-DWINDOWS -DFORCEINLINE -DMINGW -DSRTP_SUPPORT -D__EXPORT= -D_WIN32_WINNT=0x0501 -DNOMVS    
setup.exe: setup.o common.o 
    $(CC) -ggdb -g -O0 -o $@ setup.o common.o  -mno-cygwin -mwindows -lwsock32 -lws2_32 -lwinmm -lgdi32 -lcomctl32 -lmapi32 -lVfw32
2个回答

2
“是否应该使exe文件自包含”取决于您构建它的方式。我们需要查看执行的命令或发布makefile。但是,该DLL似乎不是当前版本的MinGW的一部分。此外,请澄清您是否真的在cygwin下执行此操作,或者您是错误地添加了标签。

编辑:通过一些搜索,似乎与可怕的“官方”MinGW安装有关。请删除它,并从http://tdm-gcc.tdragon.net下载Twilight Dragon构建,然后完全重新构建。 "官方"构建本来就很差 - 我不知道为什么有人会使用它。


更新的帖子。我从http://sourceforge.net/projects/mingw/files/下载并安装了MinGW(添加了msys支持)。我将其标记为cygwin,因为没有其他类似于Windows的Linux标记。 - Cratylus
谢谢,我会尝试一下。它能编译win32的代码吗?不过在您发布原帖后,makefile中的选项“-mno-cygwin”让我有些担心。那可能会引起什么问题吗? - Cratylus
@用户 不知道 - 我从未使用过。 TDM分发是MinGW的重新制作版本,它可以做到一切MinGW能做的事情——我用它来编写所有的C++程序。 - user2100815

0
如果您想使用MinGW制作独立应用程序,您应该在链接选项中添加-static
另外,如果您正在制作Win32应用程序,请在C++编译器中添加-mwindows选项,以便它不会与主窗口一起打开控制台。

他有-mwindows选项。是否需要-static选项取决于他正在链接的内容。 - user2100815
@Neil Butterworth:你说得对,我错过了他的CCOPTIONS上的“-mwindows”。不过我会尝试使用“-static”,因为我有一个较新版本的MinGW和libgcc_s_dw2-1.dll是其中的一部分。 - Kanopus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接