2011-05-30 31 views
3

有一個我需要構建的小項目C++(它有win32代碼)。它已經有了它的Makefile。我被告知使用MinGW。我以前從未使用過它。我下載並安裝了最新的MinGW安裝程序。在Windows上使用g ++構建幫助

然後,我打開了MinGW外殼,並確實make。該exe文件已創建。但是,當我嘗試運行它時,我得到libgcc_s_dw2-1.dll丟失!爲什麼我會得到這個錯誤?不應該exe是自足的,並在任何地方運行?

UPDATE
這裏的詳細信息,在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 [email protected] setup.o common.o -mno-cygwin -mwindows -lwsock32 -lws2_32 -lwinmm -lgdi32 -lcomctl32 -lmapi32 -lVfw32 

回答

2

的exe是否應該是獨立的,取決於你如何構建它。我們需要查看已執行的命令或發佈makefile。但是這個DLL似乎並不是MinGW當前版本的一部分。此外,請澄清,如果你真的在cygwin下做這件事,或者你錯誤地添加了標籤。

編輯:有點谷歌搜索似乎與可怕的「官方」MinGW安裝有關。刪除它,然後從http://tdm-gcc.tdragon.net下載暮光龍的版本,然後完全重建。無論如何,「官方」版本都是cr * p - 我不知道爲什麼有人使用它。

+0

已更新post.I從http://sourceforge.net/projects/mingw/files/(增加了msys支持)下載並安裝了MinGW。我將它標記爲cygwin,因爲沒有其他類似linux的windows標籤 – Cratylus 2011-05-30 17:39:46

+0

@用戶看到我編輯的答案 - 獲取TDM構建。 – 2011-05-30 17:45:13

+0

謝謝你我會試一下。能不能編譯win32的代碼呢?但是在你原來的帖子後,makefile中的'-mno-cygwin'選項讓我覺得有點可疑。那麼會導致什麼問題呢? – Cratylus 2011-05-30 17:48:03

0

如果你想要做的是一個獨立的應用程序與MinGW,你應該添加-static到鏈接選項。

請注意,如果您正在製作Win32應用程序,請將-mwindows選件添加到C++編譯器,以便它不會與主窗口一起打開控制檯。

+0

他有-mwindows。而且是否需要靜態取決於他所連接的內容。 – 2011-05-30 18:13:11

+0

@尼爾·巴特沃斯:你說得對,我錯過了CCOPTIONS上的'-mwindows'。我會給'-static'一個嘗試,因爲我有最新版本的MinGW,libgcc_s_dw2-1.dll是它的一部分。 – Kanopus 2011-05-30 18:17:08