2010-08-26 96 views
9

我正在學習windows API,並使用mingw作爲Code :: Blocks作爲我的編譯器作爲我的IDE。我遇到了使用wWinMain函數的問題。我用這裏的程序link text。它在VSC++ 2008 express上編譯得很好,但是當使用mingw時,我得到了「WinMain @ 16的未定義引用」錯誤。我已經找出了問題所在(我認爲)。通過用Winmain替​​換wWinMain,用LPSTR替換字符串指針PWSTR,它可以很好地編譯。我的問題是,我該如何解決這個問題,如果沒有,不使用Unicode那麼大的一筆交易。wWinmain,Unicode和Mingw

謝謝。

回答

12

使用普通(非Unicode)WinMain函數,然後使用GetCommandLineW獲取您的unicode命令行。 MinGW不知道wWinMain

您可能很難找到在MinGW上工作的人; last time I used it it did not support most of the wchar_t components of the C++ standard library (i.e. std::wifstream, std::wstring, etc),它使得與Unicode Windows位的接口變得困難。

對MSVC有什麼不滿?

+0

我沒有任何反對MSVC的事情,它只是我認爲你不能發佈你使用快速版製作的軟件。儘管從這一點來說我有很長的路要走,但我希望能夠在合法的時候能夠做到。 – contrapsych 2010-08-26 00:51:18

+7

@JAKE:使用MSVC Express Edition可以構建什麼樣的軟件沒有限制。完整版本和快速版本之間的唯一區別是完整版本具有*顯着*更多的功能,例如安裝MSVC插件(即Visual Assist X)的能力。但是編譯代碼沒有限制 - 它不是來自Visual Studio,而是來自Windows SDK。 – 2010-08-26 00:53:29

+0

哦,顯示我所知道的,謝謝,我想我可能會開始使用VS。 – contrapsych 2010-08-26 00:57:45

19

對於舊版本的MinGW的,你可以使用一個包裝:

MinGW的支持unicode主:

https://github.com/coderforlife/mingw-unicode-main/

簡單封裝添加wmain和wWinMain支持MinGW的

這些包裝允許在MinGW中無縫地使用wmain/wWinMain ,具有Unicode(WCHAR),常規(CHAR)或選擇的能力 (TCHAR)。

使用它們的說明在文件中。另外看看 其他使用它們的程序。


對於MinGW的新版本中,你應該使用-municode選項,就像它在MinGW的支持unicode的主自述說:

注意:這不應該再作爲MinGW的現在有一個內置的 解決方案。將-municode添加到命令行(並且可能將外部「C」 添加到wmain函數中)。

-municode選項與MinGW-w64一起使用。在2012-07年,當我嘗試MinGW時,它沒有-municode選項。

下面是如何安裝的MinGW-W64:

目標的Win32:

目標Win64平臺:


Unicode相關的問題:

+3

可能值得添加'-municode'是***鏈接器*設置**。 – 2016-10-31 05:29:16

1

我知道,我應該有評論,而不是回答,但我沒有足夠的聲譽。

我想補充一點,我必須在[設置>編譯器...>工具鏈可執行文件>程序文件]中更改指向exe文件的鏈接,才能運行社區版本。

另外,我的CodeBlocks從2016年聲稱它是Unicode,但-municode選項不起作用,只有社區版本的MiniGW更新工作。

如果您想再次使用main而不是wmain,則必須刪除-municode選項。